请问如下图这条命令脚本的含义是什么?干什么用的?for /f "delims=?" %%a in ('dir /a /b') do attrib -a -s -h -r "%%a"      abc.cmd文件是命令执行文件,跟abc.bat命令批处理文件,一样可直接在系统里被运行或被执行,方法是滑鼠右击该文件,再点击弹出的快捷菜单中“Runasadministrator”,然后会弹出UserAccountControl对话框窗口,点击其中的Yes按钮,这样就会弹出CommandPrompt窗口,来真正地或实际地运行.cmd命令文件或.bat批处理文件了。for/f"delims=?"%%ain('dir/a/b')doattrib-a-s-h-r"%%a"上边这个就是一个简单的试验性命令,意思就是~查看当前文件夹,将当前文件夹中的子文件夹及文件并都给列出,然后查看后的结果中,凡带有存档文件、系统文件、隐藏文件、只读文件者,都给以解开(即:凡存档文件都变更为非存档文件,凡系统文件都变更为非系统文件,凡隐藏文件都变更为非隐藏文件,凡只读文件都变更为可读可写文件)。for是电脑命令行中表示执行循环的语句/f命令行中凡带斜杠(/)者,即为”参数开关“,该/f是指file-set(文件集),即该循环每次对文件集中的每个文件都会进行打开、读取和处理"delims=?"这个呢,delims是指delimiterset(定界符设定或分隔符设定)的意思,defaultdelimitersetisspaceortab(默认的文件集定界符设定是空格或制表符),比如指定空格做分隔符就可写为"delims="或者其实不写也行,因为默认就是"delims="嘛,问号(?)和星号(*)在文件名里做通配符指代的是某一个字符和多个字符,比如abc可用a?c或a*来指代,"delims=?"~有没有这么用的呢?我在文件集中从未这么用过,孤陋寡闻,不晓得了呢…抱歉…%%a是变量名,%(百分号)是命令行变量前的符号,如果仅是直接在命令行执行就用一个%(百分号),而要在.cmd命令文件或.bat批处理文件中,就要用%%(俩百分号)了,前一个百分号是转义字符,后一个百分号才是真的表示变量呢,就是说系统在编译批处理过程中,会将遇到的头一个百分号给转义没了(消除掉了),俩百分号就会消掉打头一个百分号,剩下后边一个百分号,编译器还会明白这是个变量,变量名即a,当然也可用其它字母来做变量名,比如:%%i、%%n,等等in就是for循环要执行的结果集合,即从哪里揪出for循环每次要运行的file-set(文件集)dir/a/b,该命令是查询当前文件夹中的各个子文件夹及各个文件加以列出。dir是directory的缩写,过去都管文件夹(folder)叫“目录”(directory),dir就是查询目录列表即文件夹列表的命令。/a这个参数开关是指attributes即文件属性的意思,没跟任何更进一步子开关呢,光是一个/a呢,就会把当前文件夹下的所有子文件夹及所有文件的名单都列出来;/b这个参数开关是指bareformat,即“裸格式”,就是光是一个文件名(带后缀或扩展名)及文件夹名,没带有啰啰嗦嗦的其他头信息或简讯,譬如swapfile.sys(裸式文件名)、ProgramData(裸式文件夹名)。dir/a/b这个命令要被括在圆括号内,因为该命令中含有空格字符,所以要先用单引号或双引号给括住,这样编译器才不会给执行错了,此例是用了单引号来括住,再用圆括弧给括住,即('dir/a/b')do是对for循环中前边指令的每个结果进行循环执行。do后边的attrib-a-s-h-r"%%a"即要循环执行的命令,%%a是变量,是dir/a/b运行结果的每一个文件名或文件夹名都依次赋值给它,然后再在attrib-a-s-h-r"%%a"对其进行执行处理。attrib是attributes或fileattributes,即文件属性的意思,该命令用以加载或解除一个或多个文件属性。a是指Archivefileattribute(存档文件属性),s是指Systemfileattribute(系统文件属性),h是指Hiddenfileattribute(隐藏文件属性),r是指Read-onlyfileattribute(只读文件属性)。参数+a就是将文件加载为存档文件,相反参数-a就是将文件卸载或解开为非存档文件;参数+s就是将文件加载为系统文件,相反参数-s就是将文件卸载或解开为非系统文件;参数+h就是将文件加载为隐藏文件,相反参数-h就是将文件卸载或解开为非隐藏文件;参数+r就是将文件加载为只读文件,相反参数-r就是将文件卸载或解开为可读可写文件。命令中每个参数之间用空格来隔开,命令最后一个空格后边是要处理的文件或文件夹对象,即"%%a"。attrib-a-s-h-r"%%a"意指对循环中的每个文件或文件夹都进行非存档、非系统、非隐藏、可读可写的处理。望吾之释,能令君得。Goodluck.1人认为此有帮助·此是否有帮助?是否抱歉,这没有帮助。太棒了!感谢你的反馈。你对此的满意度如何?感谢你的反馈,它能帮助改进网站。你对此的满意度如何?感谢你的反馈。
        解释得很详细,我差不多明白了,谢谢。更通俗更简洁点讲,就是跟数学公式上的变量一样可以每每代入不同数值,同理,该循环命令即是:将dir/a/b这条命令所查询到结果的值代入到变量%%a,然后再一条条去执行attrib-a-s-h-r"%%a"命令,dir/a/b命令得到了五个文件或文件夹的查询结果,则attrib-a-s-h-r"%%a"会依次一个接一个地循环对这五个文件或文件夹进行属性改变的处理;dir命令得到了十个查询结果依次一个个地代入变量%%a,则attrib命令会十次循环地一个个地对变量%%a进行文件属性变更的处理;dir命令得到了百个结果,则attrib命令会百次对其更变文件属性;dir命令得到了千个、万个查询结果,则attrib命令会循环千次、万次来对文件属性进行更改,依此类推…1.for/f"delims=?"%%ain('dir/a/b')doattrib-a-s-h-r"%%a"2.for/f"delims=?"%%ain('dir/a/b')do(attrib-a-s-h-r"%%a")3.for/f"delims=?"%%ain('dir/a/b')do(attrib-a-s-h-r"%%a")4.for/f"delims=?"%%ain('dir/a/b')do(attrib-a"%%a"attrib-s"%%a"attrib-h"%%a"attrib-r"%%a")以上四种写法的批处理命令行语句,执行结果会是一样的。以第3种、第4种语句写法为佳,为什么呢?因为循环部分被圆括号给括住了,编译器更不容易读误,对其他读者而言也可读性更好,还可在圆括弧内放置多条语句进行循环执行。其实呢,用更简单例子,更容易理解,譬如做个ViewTxt.bat的批处理文件(该批处理运行后只做查看,不会对文件或文件夹做任何改动),来查看当前文件夹中的TXT文本文件的内容~(存盘文件名:ViewTxt.bat)@echooffcddate/ttime/techo=echo=for/f"delims=?"%%ain('dir/a/b')do(if"%%~xa"==".txt"(echo%%aecho=type"%%a"echo=echo=echo=))pause1人认为此有帮助·此是否有帮助?是否抱歉,这没有帮助。太棒了!感谢你的反馈。你对此的满意度如何?感谢你的反馈,它能帮助改进网站。你对此的满意度如何?感谢你的反馈。
        abc.cmd文件是命令执行文件,跟abc.bat命令批处理文件,一样可直接在系统里被运行或被执行,方法是滑鼠右击该文件,再点击弹出的快捷菜单中“Runasadministrator”,然后会弹出UserAccountControl对话框窗口,点击其中的Yes按钮,这样就会弹出CommandPrompt窗口,来真正地或实际地运行.cmd命令文件或.bat批处理文件了。for/f"delims=?"%%ain('dir/a/b')doattrib-a-s-h-r"%%a"上边这个就是一个简单的试验性命令,意思就是~查看当前文件夹,将当前文件夹中的子文件夹及文件并都给列出,然后查看后的结果中,凡带有存档文件、系统文件、隐藏文件、只读文件者,都给以解开(即:凡存档文件都变更为非存档文件,凡系统文件都变更为非系统文件,凡隐藏文件都变更为非隐藏文件,凡只读文件都变更为可读可写文件)。for是电脑命令行中表示执行循环的语句/f命令行中凡带斜杠(/)者,即为”参数开关“,该/f是指file-set(文件集),即该循环每次对文件集中的每个文件都会进行打开、读取和处理"delims=?"这个呢,delims是指delimiterset(定界符设定或分隔符设定)的意思,defaultdelimitersetisspaceortab(默认的文件集定界符设定是空格或制表符),比如指定空格做分隔符就可写为"delims="或者其实不写也行,因为默认就是"delims="嘛,问号(?)和星号(*)在文件名里做通配符指代的是某一个字符和多个字符,比如abc可用a?c或a*来指代,"delims=?"~有没有这么用的呢?我在文件集中从未这么用过,孤陋寡闻,不晓得了呢…抱歉…%%a是变量名,%(百分号)是命令行变量前的符号,如果仅是直接在命令行执行就用一个%(百分号),而要在.cmd命令文件或.bat批处理文件中,就要用%%(俩百分号)了,前一个百分号是转义字符,后一个百分号才是真的表示变量呢,就是说系统在编译批处理过程中,会将遇到的头一个百分号给转义没了(消除掉了),俩百分号就会消掉打头一个百分号,剩下后边一个百分号,编译器还会明白这是个变量,变量名即a,当然也可用其它字母来做变量名,比如:%%i、%%n,等等in就是for循环要执行的结果集合,即从哪里揪出for循环每次要运行的file-set(文件集)dir/a/b,该命令是查询当前文件夹中的各个子文件夹及各个文件加以列出。dir是directory的缩写,过去都管文件夹(folder)叫“目录”(directory),dir就是查询目录列表即文件夹列表的命令。/a这个参数开关是指attributes即文件属性的意思,没跟任何更进一步子开关呢,光是一个/a呢,就会把当前文件夹下的所有子文件夹及所有文件的名单都列出来;/b这个参数开关是指bareformat,即“裸格式”,就是光是一个文件名(带后缀或扩展名)及文件夹名,没带有啰啰嗦嗦的其他头信息或简讯,譬如swapfile.sys(裸式文件名)、ProgramData(裸式文件夹名)。dir/a/b这个命令要被括在圆括号内,因为该命令中含有空格字符,所以要先用单引号或双引号给括住,这样编译器才不会给执行错了,此例是用了单引号来括住,再用圆括弧给括住,即('dir/a/b')do是对for循环中前边指令的每个结果进行循环执行。do后边的attrib-a-s-h-r"%%a"即要循环执行的命令,%%a是变量,是dir/a/b运行结果的每一个文件名或文件夹名都依次赋值给它,然后再在attrib-a-s-h-r"%%a"对其进行执行处理。attrib是attributes或fileattributes,即文件属性的意思,该命令用以加载或解除一个或多个文件属性。a是指Archivefileattribute(存档文件属性),s是指Systemfileattribute(系统文件属性),h是指Hiddenfileattribute(隐藏文件属性),r是指Read-onlyfileattribute(只读文件属性)。参数+a就是将文件加载为存档文件,相反参数-a就是将文件卸载或解开为非存档文件;参数+s就是将文件加载为系统文件,相反参数-s就是将文件卸载或解开为非系统文件;参数+h就是将文件加载为隐藏文件,相反参数-h就是将文件卸载或解开为非隐藏文件;参数+r就是将文件加载为只读文件,相反参数-r就是将文件卸载或解开为可读可写文件。命令中每个参数之间用空格来隔开,命令最后一个空格后边是要处理的文件或文件夹对象,即"%%a"。attrib-a-s-h-r"%%a"意指对循环中的每个文件或文件夹都进行非存档、非系统、非隐藏、可读可写的处理。望吾之释,能令君得。Goodluck.1人认为此有帮助·此是否有帮助?是否抱歉,这没有帮助。太棒了!感谢你的反馈。你对此的满意度如何?感谢你的反馈,它能帮助改进网站。你对此的满意度如何?感谢你的反馈。
        解释得很详细,我差不多明白了,谢谢。此是否有帮助?是否抱歉,这没有帮助。太棒了!感谢你的反馈。你对此的满意度如何?感谢你的反馈,它能帮助改进网站。你对此的满意度如何?感谢你的反馈。
        解释得很详细,我差不多明白了,谢谢。更通俗更简洁点讲,就是跟数学公式上的变量一样可以每每代入不同数值,同理,该循环命令即是:将dir/a/b这条命令所查询到结果的值代入到变量%%a,然后再一条条去执行attrib-a-s-h-r"%%a"命令,dir/a/b命令得到了五个文件或文件夹的查询结果,则attrib-a-s-h-r"%%a"会依次一个接一个地循环对这五个文件或文件夹进行属性改变的处理;dir命令得到了十个查询结果依次一个个地代入变量%%a,则attrib命令会十次循环地一个个地对变量%%a进行文件属性变更的处理;dir命令得到了百个结果,则attrib命令会百次对其更变文件属性;dir命令得到了千个、万个查询结果,则attrib命令会循环千次、万次来对文件属性进行更改,依此类推…1.for/f"delims=?"%%ain('dir/a/b')doattrib-a-s-h-r"%%a"2.for/f"delims=?"%%ain('dir/a/b')do(attrib-a-s-h-r"%%a")3.for/f"delims=?"%%ain('dir/a/b')do(attrib-a-s-h-r"%%a")4.for/f"delims=?"%%ain('dir/a/b')do(attrib-a"%%a"attrib-s"%%a"attrib-h"%%a"attrib-r"%%a")以上四种写法的批处理命令行语句,执行结果会是一样的。以第3种、第4种语句写法为佳,为什么呢?因为循环部分被圆括号给括住了,编译器更不容易读误,对其他读者而言也可读性更好,还可在圆括弧内放置多条语句进行循环执行。其实呢,用更简单例子,更容易理解,譬如做个ViewTxt.bat的批处理文件(该批处理运行后只做查看,不会对文件或文件夹做任何改动),来查看当前文件夹中的TXT文本文件的内容~(存盘文件名:ViewTxt.bat)@echooffcddate/ttime/techo=echo=for/f"delims=?"%%ain('dir/a/b')do(if"%%~xa"==".txt"(echo%%aecho=type"%%a"echo=echo=echo=))pause1人认为此有帮助·此是否有帮助?是否抱歉,这没有帮助。太棒了!感谢你的反馈。你对此的满意度如何?感谢你的反馈,它能帮助改进网站。你对此的满意度如何?感谢你的反馈。

点赞(84) 打赏

微信小程序

微信扫一扫体验

立即
投稿

微信公众账号

微信扫一扫加关注

发表
评论
返回
顶部