我正在运行Windows 7 64位
我想写一个batch file,它将遍历当前目录中的子目录,将每个子目录中的第一个文件复制到父目录,重命名文件.txt
到目前为止,我有这样的:
某些符号不影响cmd命令,而其他符号则不会
在boost的窗口中调用BAT并更改ENVvariables
重新运行时将Unicodeparameter passing给Windows .bat文件
`for /D %%s in (./*) do ( cd %%s i=1 for /f %%a in (./*) do ( if i==1 cp %%a >> ./../%%s.txt i=i+1 else ) cd .. )`
我所得到的是该命令的语法不正确。
我尝试过使用回声看我有多远,我没有越过第一线。
双引号和/ f遇到麻烦
将输出中的特定字段保存到Windows CMD的variables中
捕获输出命令CMD
用文件名创build一个列表,创builddate,修改date
我怎样才能做一个batch file或脚本文件,将能够自动login到任何路由器提供的密码
我认为这种方式更简单,更容易理解:
@echo off setlocal EnableDelayedExpansion for /D %%s in (*) do ( set "firstFile=" for %%a in ("%%s*.*") do if not defined firstFile set "firstFile=%%a" copy "!firstFile!" "%%s.txt" )
对以前代码的观察:
.anyName虽然正确,但通常不会使用。 一个点表示“当前文件夹”,而.anyName表示当前文件夹下的anyName, 与 anyName 。
@echo off setlocal EnableDelayedExpansion for /D %%s in (*) do ( set i=0 for %%a in ("%%s*.*") do ( set /A i+=1 if !i! equ N copy "%%a" "%%s.txt" ) )
你必须在上面写一个数字代替N
批处理语法非常具体。
for... do ( whatever if ... ( whatever ) else ( whatever
开括号必须在所指示的位置。 whatever可能在下面的行或与(
如果你有一个语句序列(例如if-true条件),那么这些语句必须被括起来
else之前的右括号必须在samp物理线上。
cp是无效的 – 除非你使用cygwin,命令是copy
i=i+1是无效的 – 使用set /ai=i+1 ( /a用于算术表达式,否则它被认为是s字符串表达式)
%var%为变量的值。 i将永远不会等于1 除了在一个块语句(括号中的一系列语句),那么你需要调用delayedexpansion ( setlocal的选项)并使用!var! 因为%var%被解析为表达式解析时的var值,而不是执行。
/是一个开关指示符,而不是目录分隔符。 是一个目录分隔符。 Windows通常可以进行替换,但是当存在语法安全性时则不能。 最好使用正确的字符。
“quote”可能包含分隔符的参数(比如空格)。在cd语句中这不是必须的,但是在那里是无害的,而且几乎在其他地方都是必需的。
setlocal enabledelayedexpansion for /D %%s in (.*) do ( cd "%%s" set /ai=1 for /f %%a in (.*) do ( if !i!==1 ( copY %%a >> "...%%s.txt" set /ai=i+1 ) else ( ) cd .. )
虽然…我会试图使用PUSHD "%%s"代替第一张cd并popd第二张。
不知道你的copy是为了达到目的。 追加到现有的文件,我会使用type 。 有一个copy语法实现append this file to that但我使用它,所以很少我不得不查找它。
命令名 /?
从提示中将提供(有时是模糊的)文档。
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。