出于测试目的,我需要一个包含一些文件的递归目录,这些文件具有最大路径长度。
用于创建的脚本仅包含两个for循环,如下所示:
for /L %%a in (1 1 255) do @(
mkdir %%a
&& cd %%a
&& for /L %%b in (1 1 %random%) do @(
echo %%b >> %%a.txt
)
)
现在我想将这个脚本作为另一个脚本的一部分嵌入,因为要做更多的事情,但是我不能在它周围添加任何其他命令或它拒绝工作。我在windows vista下使用它,如果这对你有用。
如果我在第一行写"@ECHO OFF
“,也不在最后一行写”echo done
“,也不行。
输出是:
X:\Scripte>recursive.cmd
OFFfor /L %a in (1 1 255) do @( mkdir %a
The system cannot find the path specified.
编辑: 似乎是第8层的问题,问题似乎是在使用的命令shell中,如果使用裸cmd.exe,它的工作原理,与visual studio 2008命令shell一样,它不起作用,如上所述。
无论如何,谢谢。答案 0 :(得分:2)
我不明白如何在答案下面添加一些评论,所以我会在这里做。
仅当echo尚未关闭时,才需要在左括号前面的@符号。在这种情况下,没有@符号会发生的事情是FOR循环中的每个命令都会被回显。
而且,是的,需要&&和是文本编辑器将它全部放在一行上。但没有人发布解决方案。只需复制并粘贴到记事本中,然后根据需要分隔行。
答案 1 :(得分:1)
我认为你不需要在parens或'&&&'前面的'@'在for循环体内; parens负责处理for循环中的多个语句。
以下适用于我:
@echo OFF
for /L %%a in (1 1 255) do (
@echo a = %%a
mkdir %%a
cd %%a
for /L %%b in (1 1 %random%) do (
echo %%b >> %%a.txt
)
)
@echo done