Tre*_*vor 2 windows for-loop cmd batch-file
我正在寻找一个属性列表以及它们在命令提示符下的for循环中所做的事情.
具体来说,我有一个.bat文件,它从C:\驱动器的根目录复制文件,并将其粘贴到预先指定目录中找到的所有文件夹中(即C:\ Users\John\Test Directory).
这是命令:
@echo off
for /D %%a in (C:\Users\John\Test Directory\*.*) do xcopy /y /d C:\test_file.txt "%%a\"
Run Code Online (Sandbox Code Playgroud)
.bat正是我需要它做的事情,但我不明白命令中"%% a"的作用.我看到使用%% g,%% f等的类似命令,但没有定义为什么选择这些命令或者他们具体做什么.这些属性是任意的还是具有已定义的功能?我似乎无法找到有关属性的任何信息,所以任何见解都值得赞赏!
随心所欲.您可以使用任何字母,上部或下部,甚至符号.
for %%# in... do command %%#
Run Code Online (Sandbox Code Playgroud)
也会起作用.但是,每次迭代使用多个令牌时,最好使用字母表.这是一个例子,原因如下:
for /f "usebackq tokens=1* delims==" %%I in ("textfile.txt") do (
set "config[%%~I]=%%~J"
)
Run Code Online (Sandbox Code Playgroud)
这是因为%%I包含在第一个等号前面匹配的文本,并%%J包含第一个等号后的所有内容. 这个答案在上下文中显示了这个例子
您的问题的答案在for命令的文档中暗示. help for在cmd控制台中获取完整详细信息.特别:
一些例子可能有帮助:
FOR/F"eol =; tokens = 2,3*delims =,"(myfile.txt)中的%i执行@echo%i%j%k
将解析myfile.txt中的每一行,忽略以分号开头的行,将第2和第3个标记从每行传递给for body,并用逗号和/或空格分隔标记.注意for body语句引用%i获取第二个标记,%j获取第三个标记,%k获取第3个标记之后的所有剩余标记.
本页进一步解释:
FOR参数
必须使用单个字符定义第一个参数,例如字母G.
FOR %%G IN ...在FOR循环的每次迭代中,IN(....)子句被计算并
%%G设置为不同的值如果此子句导致单个值,则将
%%G其设置为等于该值并执行命令.如果子句导致多个值,则隐式定义额外参数以保存每个参数.这些是按字母顺序自动分配的
%%H %%I %%J...(隐式参数定义)如果参数引用文件,则可以使用增强变量引用来提取文件名/路径/日期/大小.
你当然可以挑选除字母之外的任何字母
%%G.
%%G是一个很好的选择,因为它不与任何路径名格式字母(a,d,f,n,p,s,t,x)冲突,并提供最长的非冲突字母用作隐式参数.G > H > I > J > K > L > M
格式字母区分大小写,因此使用大写字母也是避免冲突的好方法,%%A而不是%%a.
为了彻底的利益,应该指出:
for在cmd控制台中使用时,使用单个百分比.for在bat脚本中使用时,使用双倍百分比."Hello world!"变成Hello world!).使用它来强制所需的格式很方便. "%%~G"将始终引用,是否引用了捕获的值.在使用for循环捕获文件名时,应始终执行此操作.help for更多详细信息,请参阅cmd控制台中的最后几页.| 归档时间: |
|
| 查看次数: |
577 次 |
| 最近记录: |