マンガでよめる痔のこと・薬のこと

バッチファイルで以下のようなプログラムを書いたのですが、diskpart.exeが開いた状態で進みません。
これをなんとかして進むようにしたいです。

diskpart.exe
list volume

どうやったらバッチファイルでdiskpart.exeを開き、次のlist volumeを実行できますか?。

プログラムをご存知の方、どうかご教授お願いいたします。

「バッチファイルでdiskpart.exe」の質問画像

このQ&Aに関連する最新のQ&A

A 回答 (3件)

既に指摘されていますが、バッチファイルなどから diskpart を利用する際には、別途 diskpart 用のスクリプトファイルを書き、/s オプションで読み込むようにすると良い様です。




例えば、

list volume

と list.txt に書いておき、下記の様なルーチンをバッチファイル側で実行します。

FOR /F "tokens=3-4" %%A IN ('diskpart /s list.txt') DO ECHO %%A %%B
    • good
    • 0

実行ファイルを


  startコマンド
で呼び出してはいかがでしょう。

start diskpart.exe
list volume

実行ファイルの結果を何らかの形で処理する必要があるのでしたらウェイトを入れるなどして
次のコマンドまで待ち時間を作りましょう。

start diskpart.exe
ping localhost
list volume

など

*pingコマンドはウェイト代わりにローカルホストを呼び出しているだけです。
 出力デバイスにnulを指定することでウェイト中に画面への表示を無くせます。
 ping localhost > nul

この回答への補足

ご回答ありがとうございます。

一度試してみたが、やはりDISKPAET>の表示から進みませんでした。

そちらの環境で出来ているのであれば、何か私のほうの環境が悪いとかなのでしょうか。

そちらでは実行できますか?。

補足日時:2013/10/20 00:41
    • good
    • 0

http://support.microsoft.com/kb/300415/ja

こちらに紹介されている「スクリプトの作成」で対応されたらいかがでしょう。

スクリプトの最後にexitをお忘れなく。
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qバッチファイルでdiskpart.exeを操作する

バッチファイルでdiskpartを開いた後の処理が実行されません。

DISKPART>という所から処理が進行せずに、非常に困っております。

http://support.microsoft.com/kb/300415/ja

上のサイトからスクリプトの作成をするという情報は得ましたが、何をどれだけ準備してどうするのかが不明なため、前に進めずにおります。

処理としては、diskpartを開いて、list volumeというコマンドを実行したいだけなのですが、どなたか実行手順や何を揃えたら良いのかを教えていただけないでしょうか・・・。

以上、よろしくお願いいたします。

Aベストアンサー

そのページに
>diskpart /s script.txt
と書いてあるとおり、script.txt のファイルにコマンドを並べて書いて、上記のように起動します。

この場合、list volumeとだけ書いたファイルを作ってそれを diskpart /s で指定する。

Qコマンドプロンプトでドライブ文字を変更させたい

BATファイルでHDDの接続場所のドライブ文字を変更させるプログラムが必要です。

やりたいことは、接続した自分のHDDのドライブ名を探し出して、そこのドライブ文字を変更させる
プログラムです。

いろいろと試してみたのですが、どうも上手くできませんでした。

何か方法を知っている方がいらっしゃったら、どうか教えて下さい。

以上、よろしくお願いいたします。

Aベストアンサー

diskpart というWindows付属のツールを使えば出来そうな気がします。
http://www.atmarkit.co.jp/ait/articles/0812/26/news119.html

「diskpart ドライブレター 変更」辺りで検索すると良さそうです。

QUSBメモリのドライブレターを固定したい

甲・乙・丙と3台のPC(OSはいずれもXP SP2)があり、HDDが甲はCのみ、乙はCとD、丙はCとDとEのドライブがある場合、USBメモリを挿すとCDドライブを飛ばしてEになったりFになったりします。
当方はUSBの中に各種ポータブルソフトインストールしており、例えば或るソフトの中にあるボタンを押せばブラウザが立ち上がると言う設定をしている場合、PC毎にドライブレターが変わると、ブラウザの階層が変わる(E\:と設定してるのに、メモリのドライブレターがF\:になっている)ので立ち上がらない、と言う事がままあります。
これを、どのPCに挿してもUSBのドライブレターをTに固定したいのです(Tは例で、SでもQでも良いです)
過去の質疑の中では「USB端子側を固定する」等の回答もお見受けしましたが、ネットカフェでのPCに挿しても自宅と同様のドライブレターにしたく、色々調べて「SubstManager」なるソフトも試してみましたが、どうにも判りません。
私の考えていることは、基本的に無理なのでしょうか?
それとも何か方法があるでしょうか?
何か良い知恵をお持ちの方、ご教示ください。

甲・乙・丙と3台のPC(OSはいずれもXP SP2)があり、HDDが甲はCのみ、乙はCとD、丙はCとDとEのドライブがある場合、USBメモリを挿すとCDドライブを飛ばしてEになったりFになったりします。
当方はUSBの中に各種ポータブルソフトインストールしており、例えば或るソフトの中にあるボタンを押せばブラウザが立ち上がると言う設定をしている場合、PC毎にドライブレターが変わると、ブラウザの階層が変わる(E\:と設定してるのに、メモリのドライブレターがF\:になっている)ので立ち上がらない、と言う事がままありま...続きを読む

Aベストアンサー

#1です。
SUBSTコマンドを利用してはどうでしょうか。
ルートディレクトリではできませんが、フォルダを作り、そこを特定のドライブ名のルートとすることができます。

1. USBメモリにフォルダを作る。仮にABCとします。
2. フォルダABC内に以下の記述を記入したバットコマンド場いるを作る。(仮に固定するドライブ名をZ:とします)
SUBST Z: %CD% (%CD%はカレントディレクトリを示す環境変数です)
3. 次回USBメモリを挿入した時、バッチファイルを実行します。
4. Z:ドライブがUSBメモリのABCフォルダに設定されます。

SUBSTコマンドの詳細は下記を参照ください

参考URL:http://itpro.nikkeibp.co.jp/article/Windows/20051025/223387/

QXCOPYで指定したフォルダとファイルをコピーしたい

C:\AAAフォルダとC:\AAA以下のファイルをコピーしたくて、
XCOPY C:\AAA D:\BBB /E
とすると、コピー先のD:\BBBにはAAAフォルダにあるファイルはコピーされるのですが、AAAフォルダそのものはコピーされません。
XCOPY C:\ D:\BBB /E
とすればコピーできるのですが、そうするとC:\のほかのフォルダもコピーされてしまいます。
EXCLUDEオプションを使うには指定するファイルが多いため、あまり使いたくありません。(コピーする前にMDでコピー先にAAAフォルダを作成するのもなるべく避けたい)
知っている方がいらしたら教えて下さい。

Aベストアンサー

xcopy /e C:\AAA D:\BBB\AAA
複数ファイルのコピーでコピー先が存在しないとき、ファイル名と見なすかディレクトリ名と見なすか聞いてきます。

応答を聞かれるのが嫌なら
echo d | xcopy /e C:\AAA D:\BBB\AAA
でいいはず。

Qbatである文字列内に特定の文字列が含まれているか確認したい

batファイルの中である変数「abc」の中に「test」という文字が含まれていたら○○を行なうという分岐を作成したいのですが、どのように行なえばよいのでしょうか?

そのまま、ずばりのお答えお待ちしております。

よろしくお願い致します。

Aベストアンサー

大文字小文字を区別しなくていいなら、

if not "%abc:test=%" == "%abc%" echo 含まれていた

区別するなら、

echo %abc% | find "test" >NUL
if not ERRORLEVEL 1 echo 含まれていた

QDirコマンドでフォルダ内ファイルの合計サイズをだすには?(コマンドプロンプトにて)

いろいろ調べましたが不明な点があり、質問します。

WindowsのDOSプロンプトでdirコマンドを打つとフォルダ・ファイルの一覧が表示されますが、その中にファイルサイズが表示されています。
このサイズを合計できるコマンドはありませんか?
DIRコマンドのオプションを調べましたがそれらしいものが見当たりません。
具体的には
C:\xxx\配下に50個程度のファイルがあります。
その50個の合計サイズを知りたいです。
xxxフォルダの親フォルダにはアクセス不可です。

ずーっと悩んでいます。よろしくお願いします。

なお、OSはWindowsNTか2000で使用予定です。

Aベストアンサー

カレントドライブ、カレントフォルダを
C:\xxx\
にした状態で、

dir /s /a-d

/sパラメータででサブディレクトリすべてを検索
/a-dパラメータでディレクトリ以外のファイル(つまり属性に関係なくすべてのファイル

これを実行すると最後にファイルの個数とファイルサイズの合計を表示します。

もし、隠し属性のファイルは合計しないのであれば、

dir /s

だけで良いと思われます。

Qバッチファイルでサーバーのファイルをクライアントへコピーしたい

サーバーに保存されているファイルを、
クライアントのCドライブへコピーしたい。

各クライアントにバッチファイルを配布して、
それを実行するだけでコピーされるようにしたいのです。

初心者で申し訳ないのですが、何卒よろしくお願いします。
------------------------

下記の記述ですと、普通にサーバーのCドライブへファイルがコピーされます。
しかし、コピー先はバッチファイルを実行したクライアントのローカルディレクトリにしたいのです。

copy \\サーバー名\フォルダ名\ファイル名 C:\

Aベストアンサー

>下記の記述ですと、普通にサーバーのCドライブへファイルがコピーされます。

そんなはずはありません。何かの勘違いでしょう。

>copy \\サーバー名\フォルダ名\ファイル名 C:\

だと、バッチファイルを実行したPCのC:\にコピーされます。

copy \\サーバー名\フォルダ名\ファイル名 C:
と、最後の \ を削れば、バッチファイルがあるのと同じディレクトリにコピーされます。

QDOSコマンドで cmd /c rd /s /q c: の意味は?

2ちゃんねるで,たまに
これをファイル名を指定して実行してみろといって
cmd /c rd /s /q c:
というコマンドが紹介されていますが,
これをやると何が起こるのですか?

Aベストアンサー

絶対に実行してはダメですね。
Cドライブのデータを全て削除するコマンドです。

CMD /C ○○ ・・・ ○○のコマンドを実行する

RD /S /Q △△ ・・・ ディレクトリを削除する
          /Sでその場所配下の全てのファイルを削除
          /Qで削除のメッセージを表示しない

Qコマンドプロンプトによるフォルダ内のファイル存在有無

バッチ処理で、特定のフォルダ内(配下にフォルダとファイルが混在している)でファイルだけの存在有無を調べて、ファイルが存在している場合とファイルが存在していない場合で処理を別々に行わせようとしたいのですが、ファイルの存在有無はどのようにコマンドで調べれば良いでしょうか?

DIR C:\test\*.* でファイルを調べて、ERRORLEVELでif判定させようと思っているのですが、 DIRコマンドでこれを行うと、フォルダまで表示されます。

どのようにしたら良いのでしょうか?教えてください。

Aベストアンサー

コマンドプロンプトで、「DIR /?」と入力すれば、DIRコマンドのヘルプが表示されます。

その記述によれば
「/A」属性スイッチで、必要な属性を持つファイルを指定できます。

Qバッチファイルで昨日の日付を取得

すみません、どなたか教えて下さい。

バッチファイルの記述で、昨日の日付を取得する方法を教えて下さい。
今日の日付は下記のように取得しています。

rem 日時変数の取得
for /f "tokens=1-3 delims=/" %%a in ('echo %date:~-10%') do (set YYYYMMDD=%%a%%b%%c
)

Aベストアンサー

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if %mm%==05 (set mm=04&& set dd=30)
if %mm%==06 (set mm=05&& set dd=31)
if %mm%==07 (set mm=06&& set dd=30)
if %mm%==08 (set mm=07&& set dd=31)
if %mm%==09 (set mm=08&& set dd=31)
if %mm%==10 (set mm=09&& set dd=30)
if %mm%==11 (set mm=10&& set dd=31)
if %mm%==12 (set mm=11&& set dd=30)
)
echo 昨日は、%yy%年%mm%月%dd%日です。

echo.
pause
:: ----- prevdate.bat おわり -----

参考URL:http://www.atmarkit.co.jp/fwin2k/win2ktips/419batchdate/batchdate.html

:: ----- prevdate.bat はじめ -----
@echo off
::今日の日付を取得
set yy=%date:~0,4%
set mm=%date:~5,2%
set dd=%date:~8,2%
echo 今日は、%yy%年%mm%月%dd%日です。

::1日前の日付を計算する
set /a dd=%dd%-1
set dd=00%dd%
set dd=%dd:~-2%
set /a ymod=%yy% %% 4
if %dd%==00 (
if %mm%==01 (set mm=12&& set dd=31&& set /a yy=%yy%-1)
if %mm%==02 (set mm=01&& set dd=31)
if %mm%==03 (set mm=02&& set dd=28&& if %ymod%==0 (set dd=29))
if %mm%==04 (set mm=03&& set dd=31)
if...続きを読む


人気Q&Aランキング