所以基本上,假设我在目录中有以下文件夹:
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:UsersmynameMy Documentstest"%%v""
但是,运行此程序,我得到"访问被拒绝"。
知道出了什么问题,或者有其他方法吗?谢谢。
命令
echo test>"C:UsersmynameMy Documentstest"%%v""
尽管两边有错误的双引号%%v
但test
文本还是将直接重定向到目录,而不是目录中的文件test.txt
。换句话说:Windows拒绝了使用现有目录的名称创建文件的尝试,结果是拒绝访问错误消息。
在文本文件folderlist.txt
中指定的每个目录中使用行test
创建文件test.txt
的解决方案是:
for /F "tokens=1 delims=," %%v in (folderlist.txt) do echo test>"%USERPROFILE%My Documentstest%%vtest.txt"
还可以在批处理文件中使用以下命令行在测试文件夹的所有子文件夹中创建文件大小为 0 字节的文件test.txt
。
for /D %%v in ("%USERPROFILE%My Documentstest*") do echo. >nul 2>"%%vtest.txt"
在这种情况下,命令 FOR 返回具有完整路径的子文件夹名称,始终不带双引号,即使文件夹路径包含空格字符也是如此。
请参阅如何从批处理文件创建空文本文件?,并阅读有关使用命令重定向运算符的Microsoft文章以了解更多详细信息。
echo. >nul 2>test.txt
导致只写入 STDOUT 的新行重定向到设备 NUL,以避免在批量执行时将大量空白行打印到屏幕上。对于文件text.txt
STDERR不会重定向任何内容,因为命令ECHO没有打印导致创建空test.txt
文件的错误消息。
在命令提示符窗口中运行,for /?
以获取有关命令 FOR 的帮助。