for /F "tokens=*" %* in (Test.txt) do md ".\%*" & cd "%*" & md "Something1" & md "Something2" & cd ".."
DOS命令将从文本文件中提取名称并创建一个命名文件夹,然后创建两个子文件夹。
Apple
{
{1}} {
{1}}
但是当我把它放入批处理文件中时如下:
-Something1
然后从Windows GUI运行它,屏幕弹出,关闭,什么都不做。即使我用工作DOS命令创建一个批处理它也什么都不做。我错过了什么?
谢谢。
答案 0 :(得分:6)
在批处理文件中,您需要将for
变量中的'%'加倍。不要问我为什么。 :)
答案 1 :(得分:2)
这种变化对我有用:
setlocal enabledelayedexpansion
for /F "tokens=*" %%g in ('type foo.txt') do (
md ".\%%g"
cd "%%g"
md "Something1"
md "Something2"
cd ".."
)
endlocal
我选择将一系列命令放在括号和一行之间。您的&
- 分离命令链也应该可以正常工作。
setlocal
/ endlocal
块限制了变量的范围。 enabledelayedexpansion
参数在cmd
中启用了一些额外功能。通常不需要它,因为它是CMD的默认值,但是默认值可能已经通过策略更改,因此包含它是一种很好的做法。
我更喜欢在脚本中使用pushd
/ popd
而不是cd blah
/ cd ..
。我认为它更强大。