• ベストアンサー

【Windowsバッチ】ファイル名の指定

Windowsバッチで、下記のようにfor文からファイルを読み込む場合について質問があります。 ・for /f "オプション" %i in (ファイル名) do @echo %i 上記で、ファイル名の箇所にスペースを含むファイル名が来たときでも 正しくファイルを読み込むためにはどうすればよいのか教えてください。 こちらでいくつか試してみたんですが、 たとえば「C:\Program Files~」とファイル名を指定した場合 「C:\Program」をファイル名と認識してしまいます。

質問者が選んだベストアンサー

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4834/10234)
回答No.1

for /f "usebackq" %%i in ("C:\Program Files\AAAA\BBB.txt") do @echo %%i

関連するQ&A

  • バッチでファイルの読み込み

    Windowsバッチでファイルの読み込みをしようと思っているのですが、 下記コマンドの実行で「ファイルが見つかりません」となります。 ※パスにスペースを含むのでusebackqを使用しました。 FOR /F "usebackq tokens=1,2 delims= " %%i in ("c:\temp 1\data.txt") DO echo %%i WindowsServer2003でうまくいかなかったのですが、 Xpですれば問題なくファイルを読み込めました。 何か差があるのでしょうか?

  • バッチファイルのfor文を使ってファイルサイズをMbyteで表したい。

    バッチファイルのfor文を使ってファイルサイズをMbyteで表したい。(WindowsXP) for文を使って、フォルダー内のファイル名とサイズ一覧を作ろうとしています。 1)for %%i in (c:\test\*.*) do echo %%i %%~zi>> c:\test\testfiles.txt で一応はできたのですが、これではファイルサイズがわかりにくいので、メガバイト単位にしたいのです。(だいたいわかればいいので1024で割るとかはしない) 2)for %%i in (c:\test\*.*) do echo %%i %%~zi/1000000>> c:\test\testfiles.txt 3)for %%i in (c:\test\*.*) do set /a x=%%~zi/1000000 & echo %%i %%x>> c:\test\testfiles.txt としてもうまくいきません。 %%~ziが数値でなく文字列のため、だと思うのですが、3)は%の付け方とかも間違ってそう。 どう書けばメガバイト単位で一覧を出せるでしょうか? あれ? 4)for %%i in (c:\test\* ) do if %%~zi GEQ 1000000 echo %%i>> c:\test\testfiles.txt とすれば1メガ以上のファイル名一覧が出ますね。 ということは%%~ziは数値なのか。  どなたか、どこが間違っているのか教えていただけないでしょうか

  • バッチファイルでの%を含むファイル名の取得

    以下はEドライブを走査してフォルダごとのjpgやpngなどのファイルの数を全て表示するバッチ処理ですが。基本的に上手く動きますが%を含むファイル名、フォルダ名に当たると上手く動きません。どうしたらいいでしょうか?”ファイル名、フォルダ名に%を使うな”という回答以外でお願いします。 @echo off pushd E:\ for /f "delims=" %%j in ('dir /b /s /a:d') do call :sub "%%j" exit /b :sub echo /////////////////////////////////////////////////////////////////////////// for /f "delims=" %%x in ('dir /b %1 ^| find /c ".jpg"') do call :jpg %%x for /f "delims=" %%x in ('dir /b %1 ^| find /c ".JPG"') do call :jpg2 %%x for /f "delims=" %%x in ('dir /b %1 ^| find /c ".png"') do call :png %%x for /f "delims=" %%x in ('dir /b %1 ^| find /c ".bmp"') do call :bmp %%x echo %1 echo jpg %jpg_c% echo png %png_c% echo bmp %bmp_c% echo JPG %jpg2_c% goto :EOF :jpg set jpg_c=%1 :echo %1 goto:EOF :jpg2 set jpg2_c=%1 :echo %1 goto:EOF :png set png_c=%1 :echo %1 goto:EOF :bmp set bmp_c=%1 :echo %1 goto:EOF :all set all_c=%1 :echo %1 goto:EOF

  • MS-DOSバッチファイルで

    度々ご教授お願い致します。 以下のようなMS-DOSバッチファイルで、xcopy コピー元 コピー先のようにしたいのですがこれではうまくいきません。 どのようにしたら良いでしょうか。宜しくお願い致します。 FOR /F "eol=; tokens=1,2 delims=, " %%i in (c:\a.txt) do (@echo %%i %%j) xcopy %%i %%j /s /o /y >> (@echo %%i %%j)

  • バッチファイル内のパスについて

    バッチファイルのパスについて質問があります。 下記内容のファイルを実行すると、  「C:\Programが見つかりません」 というようなエラーとなってしまいます。 setコマンド時には、スペースの入ったパスはエラーとなってしまうのでしょうか? どなたがご教授ください。お願いします。 @echo off set JAVA_HOME=C:\Program Files\JavaSoft\JRE\1.3.1_12

  • バッチファイルでの計算方法

    一行のみのtxtファイル(1111.txt)に日付 スペース 時間 スペース 値 が格納されています。 バッチファイルにて上記値に定数(6666)をかけ単位を追加して出力(2222.txt)したいとおもいます。 以下のように書いてみましたが どこが悪いかよくわかりません。 どなたかお教えいただきたいと思います @ECHO OFF FOR /F "eol=# tokens=1,2,3" %%a in (1111.txt) SET /A x=6666 SET y=%%c*%x% DO ECHO %%a %%b %%y >2222.txt

  • バッチファイルによるフォルダ名の変更

    バッチファイルによるフォルダ名の変更 あるフォルダに存在する日付(西暦)を名称としたフォルダ、例えば 2010-0530 を、バッチファイルを実行することで、和暦(元号)、例えば H220530 に名前を変え、その後に特定のアプリケーション(Picasa3)を実行したいのです。 インターネット上の情報を参考に、 @echo off cd /d K:\VIDEOPHOTO\H220401から for /d %%f in ( * ) do call :sub "%%f" start C:\"Program Files\Google\Picasa3\Picasa3.exe" exit /b :sub set dirname=%1 set dirname=%dirname:(=【% set dirname=%dirname:)=】% set dirname=%dirname:2010-=H22% ren %1 %dirname% goto :EOF というバッチファイルを作り、概ね希望どおりの結果となったのですが、既に同名のフォルダが存在していた場合(例ではH220530というフォルダが既に存在)、フォルダ名の変更はされずスルーされてしまいます。 既に同名のフォルダが存在していても、フォルダ名を変更(既存フォルダと統合)することはできますでしょうか?

  • バッチファイルでファイル名に文字列を挿入したい。

    フォルダにあるファイル全てに対して、ファイル名の先頭に文字列を挿入するバッチファイルを作っています。 対象のファイルは、主にエクセル、ワード、パワーポイント、PDFですが、ファイルの種類に関係なく、全てのファイルに対して、ファイル名の先頭に文字列を挿入したいです。 @echo off for %%i in (*) do ren "%%i" "【文字列】%%i" pause として文字列の挿入自体はできました。 しかし、このファイルを2回実行すると、ファイル名の先頭に【文字列】【文字列】と重複して挿入されてしまうので、すでに挿入済みのファイルに対しては実行しないようにしたいのですが、うまくいきません。 また、サブフォルダ内にあるファイルに対しても同様の処理を適用したいです。 どのように記述すればよいでしょうか。 リネームソフトを使えればよいのですが、フリーソフト等はインストールできない環境ですので、できればバッチファイルを記述して対応したいのです。 OSはウインドウズ7です。

  • バッチファイルにてファイル名指定移動

    下記の質問に近いのですが、質問させていただきます。 http://oshiete1.goo.ne.jp/kotaeru.php3?q=2094137 ファイル名にaaaとbbbという文字列が含まれるファイルを cccフォルダに移動する場合はどのように記載したらよいのでしょうか? よろしくお願いいたします。 ※以下は上記質問URLを参考にaaaという文字列のみが含まれるファイルをcccに移動するバッチです。 ======= @echo off findstr /L /M "aaa" *.send >filelist.dat IF %ERRORLEVEL% EQU 0 FOR /F "delims=" %%i in (filelist.dat) do move "%%i" ccc del filelist.dat =======

  • バッチファイルの繰り返し処理プログラム

    ------------------------------------------------- @echo off for /d %%A in ( C:\Documents and Settings\ダウンロード専用\デスクトップ\mp3) do echo %%A START /D"I:\ゲーム\PCゲーム\ステップマニア\BTC (beat counter)\bpmcount\wavetone251" wavetone.exe %%A pause --------------------------------------------------- バッチファイルの繰り返し処理プログラムの書き方(組み方に)についての質問です 上記のようなプログラムを組み 特定のフォルダ内のファイルを1つずつ順番にある特定の実行プログラムに読み込むバッチファイルを作成しているのですが、なぜかファイルはあるのに読み込んでくれないためプログラムの組み方に詳しいベテランさんに質問します。 図書館の本やインターネットで独学して日々勉強はしているのですが、イマイチプログラムの組み方が分からずに詰まってしまっているため、この場をもって皆様方の丁寧なご指導やアドバイスをお待ちしております。 サンプルバッチ表記+解説付きなら大変ありがたいです。 よろしくお願い申し上げます。

専門家に質問してみよう