• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:BATファイルでプログラムファイルの書き換え)

BATファイルでProgram Filesの半角スペースを含むフォルダを上書きする方法

このQ&Aのポイント
  • BATファイルを使用してProgram Filesの半角スペースを含むフォルダ内のファイルを上書きする方法を教えてください。
  • BATファイルのコードではProgram Filesの半角スペースがエラーの原因と考えられます。どのように修正すれば正常に動作するか教えてください。
  • 他のフォルダを指定すると正常に動作するため、Program Filesの半角スペースがエスケープされていない可能性があります。どのようにすれば半角スペースを適切に扱えるか教えてください。

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

  • ベストアンサー
  • notnot
  • ベストアンサー率47% (4900/10358)
回答No.4

No3さんの答えでも良いのですが、区切り文字(delims)は空に出来るので、 for /f "delims=" %%A in ('dir /b /s %TEST%test.txt') do copy NEW\test.txt "%%A" 何も指定しない場合の区切り文字は空白とタブです。つまり%%A にはデータを空白文字で区切った最初の一語が入ります。tokens=1-2 とか書くと、二番目の語が %%B に入ります。 詳しい説明は、for /? で表示できます。 "delims=" だと区切り文字が無くなるので、行全体が %%A に入ります。

その他の回答 (3)

  • dscripty
  • ベストアンサー率51% (166/325)
回答No.3

delims 使ってもいいとおもう。 delims は、ファイルで使われることがない記号で、コマンドラインに悪影響がなければ何でもOK。 C:\> Set TEST="C:\Program Files\TEST\" C:\> For /f "delims=<" %i in ('Dir /s /b %TEST%test.txt') do @echo.copy NEW\test.txt "%i"

  • Tacosan
  • ベストアンサー率23% (3656/15482)
回答No.2

どう「ちゃんと動作しない」のですか?

  • kawais070
  • ベストアンサー率52% (2242/4283)
回答No.1

Windows3.1以前との互換性のため、長いフォルダ名/ファイル名には、短縮形の名前が付けられています。 dir c:\ /x というコマンドを実行すると、その短縮形を見ることができます。 (たぶん、PROGRA~1 ってなっていると思う) なので、Program Files の代わりに、PROGRA~1 って書けばよいですよ。

関連するQ&A