• ベストアンサー

バッチファイル 文字列にスペースがある場合

pita-goraの回答

  • ベストアンサー
  • pita-gora
  • ベストアンサー率70% (102/145)
回答No.2

for /f %%A in ('dir /b /s c:\"a aa"\*.pdf') do echo copy "%%A" D:\ のようにecho でどのようなコマンドが実行されているか確認しましょう。 この記述ではdirコマンドで表示されるパスの中に空白があるため %%A には空白までの文字列しか代入されません。 以下のように修正して試してみてください。 for /f "delims=" %%A in ('dir /b /s c:\"a aa"\*.pdf') do copy "%%A" D:\

mk1234
質問者

お礼

回答ありがとうございました。 うまく行きました。

関連するQ&A

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

    以下は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

  • コマンドでのファイルの移動

    aaフォルダの中に複数のフォルダがあり、その複数フォルダの中のファイルをすべてbbフォルダに移したいのですが・・・・ for /f %a in ('dir D:\aa /b') do xcopy /d D:\aa\%a\* D:\bb\ とすると、aaの中のフォルダで、フォルダ名が半角スペースを含むものは移動の対象となってくれません。(>_<) 「てす と」フォルダは「てす」として判断され、中のファイルは そのまま残ってしまいます。 どのようにすればうまくいけるのでしょうか。 よろしくお願いいたします。

  • バッチファイルの書き方

    サブフォルダすべてにひとつのファイルをコピーしたいのですが、 for /d %%a in (subdir*) do copy コピーしたいファイル名 "%%a\" 上のようなバッチファイルではうまくいきませんでした どのようにしたらいいのか、どなたか教えていただけないでしょうか

  • コマンドプロンプト 半角スペースを含んだ文字列の抽出

    コマンドプロンプト 半角スペースを含んだ文字列の抽出 したいです。 reg quaryの結果の一部をコマンドプロンプトで抽出したいのですが、半角スペースを含んでいるからか、求めるような結果が得られません。 ●ほしい文字列: C:\Program Files\aaa bbb ccc\aa bb ●reg quaryの結果: ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\aaaRegister Dir REG_SZ C:\Program Files\aaa bbb ccc\aa bb ●試したコマンド: for /f "skip=2 tokens=\3,*" %A in ('reg query %REGNAME% /v Dir') do echo %A ●結果:C:\Program どのようなコマンドが適当なのでしょうか?宜しくお願いいたします。

  • バッチファイル 文字列操作のやり方

    お世話になります。 バッチファイルのコマンドについてですが、 for文の中で 一番下の階層のファイル名の先頭5バイトが "abcde"のものだけ処理対象にしたいと考えています。 例えば、 C:\tempに以下のファイルがあったら C:\temp\abcdefg.txt    ・・・(1) C:\temp\xxxxxxx.txt    ・・・(2) C:\temp\abcde.txt    ・・・(3) C:\temp\abc.txt    ・・・(4) C:\temp\abcdezzzz.txt    ・・・(5) (1)、(3)、(5)だけを処理させたいと考えています。 実装方法として、以下を考えましたがうまくいきません。 dir /s /b /a-d C\Temp > file.txt for /f "delims=" %%F in (file.txt) do ( set A=%%~nF% if "%%A:~0,5%"=="abcde" ( <処理コマンド> ) ) おそらくfor文の中で何個も命令を記述できないということと、 パラメータ修飾子の指定が間違っているからだと思われますが、 うまくできない理由を知りたいです。 よろしくお願いいたします。

  • コマンドプロンプト 半角スペースを含んだ文字列の抽出

    ●ほしい文字列: C:\Program Files\aaa bbb ccc\aa bb ●reg quaryの結果: ! REG.EXE VERSION 3.0 HKEY_LOCAL_MACHINE\SOFTWARE\aaaRegister Dir REG_SZ C:\Program Files\aaa bbb ccc\aa bb ●試したコマンド: for /f "skip=2 tokens=3*" %A in ('reg query %REGNAME% /v Dir') do echo %A ●結果:C:\Program token=3-6 としても同じ結果です。 どのようなコマンドが適当なのでしょうか?宜しくお願いいたします。

  • バッチファイル 検索してコピーするには

    cドライブのaaaフォルダ内にあるエクセルファイルをサブフォルダ内も検索し、Eドライブにコピペするコードを見つけました。 実行してみますと、aaa内に含まれるサブフォルダ内にあるエクセルファイルはコピペされますが、 aaaの直下にあるエクセルファイルはコピぺされません。 これもコピペされるようにするには、どうすれば良いか教えてください。 @echo off set Folder1=C:\aaa rem ・コピー先 set Folder2=E:\ set File=*.xls cd /d %Folder1% for /d /r %%a in ( * ) do copy "%%a\*%File%*" "%Folder2%" pause

  • バッチファイルにて指定フォルダごとコピーする方法

    バッチファイル初心者の為ご教授をお願いします。 Cドライブ直下に下記のようなフォルダがあります。 (それぞれのフォルダ内には沢山のフォルダやファイルが保存されています) 0001_2016_04_29 0001_2016_06_29 0001_2016_07_14 0002_2016_06_29 0002_2016_07_14 0002_2016_07_25 これをFドライブ(USBHDD)へフォルダ毎コピーしたいと思います。 XCOPYもしくはROBOCOPYでワイルドカードを使用しコピー出来ないでしょうか? Fドライブへは差分で保存し続けたいのでミラーは使用出来ません。 自分なりにしらべて下記のように記述してみたのですがうまくいきませんでした。 for /D %%A in (C:\0001*) do xcopy %%A /e F:\.

  • バッチファイル For 文 スペース

    いつも大変御世話になっております。 WindowsXP環境下の 【D:\test】フォルダ直下に TEST.conf というファイルがあり 中身は1行こんな文があります。↓ test001=12345 6 そして 【D:\test\bat】フォルダ直下に TEST.bat というファイルがあり 中身のードはこんなコードです。↓ For /F "tokens=1*" %%i in (..\TEST.conf) do set %%i SET IN_FILE=%test001% 実行結果は SET IN_FILE=12345 になりました。 なぜ SET IN_FILE=12345 6 ではないのですか? スペースを _ (アンスコ)など何か入れてあげると SET IN_FILE=12345_6 上記バッチファイルのFor文では、スペース手前までしか見てくれないのでしょうか? 他に方法は無いのでしょうか? もしご存知の方がいらっしゃるようでしたら、お手数ですが 実現可能かどうかをご回答願いますでしょうか? 以上、何卒宜しくお願い致します。

  • テキスト内の文字列をファイル名にして保存するバッチ

    テキスト内のデータをファイルとして保存するバッチを作成したいです。テキスト内のデータをフォルダ名として保存する方法は見つけたのですがテキストとして保存する方法がわからずご教示いただけますと助かります。 例)テキストファイル名:File_List.txt -----テキスト内のデータ------- 会社名A 会社名B 会社名C ------------------------------------------ 実現したいこと 下記のようにテキスト内のデータをファイル名としてそれぞれ保存したい。 会社名A.txt 会社名B.txt 会社名C.txt テキスト内のデータをフォルダ名にするバッチは以下でした。 for /f %%a in (%1) do md %%a Windowsサーバにてバッチを利用します。