2016-07-27 9 views
0

だから、基本的に、のは、私はディレクトリに以下のフォルダを持っているとしましょう:ディレクトリ内のすべてのフォルダにテキストファイルを作成するスクリプトを作成するにはどうすればよいですか? (Windowsのバッチ)

test_folder_1

test_folder_2

そして私もその内のすべてのフォルダのリストをテキストファイルを持っていますディレクトリ。

ディレクトリ内のすべてのフォルダにテキストファイルtest.txtを作成するスクリプトを作成するにはどうすればよいですか? (test_folder_1とtest_folder_2)?私が得る、これを実行している、しかし

for /F "tokens=1 delims=," %%v IN (folderlist.txt) DO echo test>"C:\Users\myname\My Documents\test\"%%v"" 

私はオンラインで見つけるいくつかのコードを変更し、これを得てみました「アクセスが拒否されました。」
何が問題になりましたか、これを行う別の方法はありますか?ありがとう。 %%v周りの間違った二重引用符にもかかわらず

答えて

0

コマンド

echo test>"C:\Users\myname\My Documents\test\"%%v"" 

ではなくディレクトリ内のファイルtest.txtのテキストtest直接にディレクトリをリダイレクトします。つまり、すでに存在するディレクトリの名前を持つファイルを作成しようとすると、Windowsによって拒否され、その結果、アクセス拒否エラーメッセージが表示されます。

テキストファイルfolderlist.txtで指定された各ディレクトリ内の行testでファイルtest.txtを作成するためのソリューションです:すべてで0バイトのファイルサイズでファイルtest.txtを作成することも可能である

for /F "tokens=1 delims=," %%v in (folderlist.txt) do echo test>"%USERPROFILE%\My Documents\test\%%v\test.txt" 

テストフォルダーのサブフォルダーをバッチファイルの次のコマンドラインで置き換えます。

for /D %%v in ("%USERPROFILE%\My Documents\test\*") do echo. >nul 2>"%%v\test.txt" 

コマンド、それはここにそうであるようにフォルダのパスに空白文字が含まれている場合でも、二重引用符を囲むことなく、常にフルパスで、この場合の戻りサブフォルダ名をFOR

How to create empty text file from a batch file?を参照し、詳細については、Microsoftの記事Using command redirection operatorsを参照してください。画面にバッチ実行上の空白行の多くを出力しないようにするために、デバイスNULにリダイレクトSTDOUTにちょうど新しい行を書くことで

echo. >nul 2>test.txt結果。ファイルtext.txtには、STDERRから何もリダイレクトされません。コマンドECHOによって出力されるエラーメッセージがないため、空のtest.txtファイルが作成されます。

コマンドプロンプトウィンドウfor /?でコマンドのヘルプのヘルプを参照してください。

+0

ありがとうMofi。私はあなたにも尋ねることができます、なぜ%vではなく%% vを使用しますか?どのような場合でも1つの%記号を使用できますか?その場合、その2つの違いは何ですか? – Ambushes

+0

コマンドラインから直接コマンドを実行する場合は、単一の%記号を使用します。バッチファイル内で二重%記号が使用されます。 – Filipus

関連する問題