基本上,假设我在目录中有以下文件夹:
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""
然而,运行这个,我得到“访问被拒绝。”
知道出了什么问题,还是其他方法呢?谢谢。
答案 0 :(得分:0)
命令
echo test>"C:\Users\myname\My Documents\test\"%%v""
尽管%%v
周围的双引号错误,但文字test
直接重定向到目录,而不是中的文件test.txt
目录。或者换句话说:Windows拒绝尝试创建名称为已存在目录的文件,结果是拒绝访问错误消息。
在文本文件test.txt
中指定的每个目录中使用行test
创建文件folderlist.txt
的解决方案是:
for /F "tokens=1 delims=," %%v in (folderlist.txt) do echo test>"%USERPROFILE%\My Documents\test\%%v\test.txt"
还可以在测试文件夹的所有子文件夹中创建文件大小为0字节的文件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?并阅读有关Using command redirection operators的Microsoft文章。
echo. >nul 2>test.txt
只会将 STDOUT 的新行重定向到设备 NUL ,以避免在批量执行到屏幕时打印大量空白行。对于文件text.txt
,没有任何内容从 STDERR 重定向,因为命令 ECHO 没有打印错误消息,导致创建一个空的test.txt
文件。
在命令提示符窗口for /?
中运行,获取有关 FOR 命令的帮助。