gpt4 book ai didi

windows - 定义这些批处理命令

转载 作者:可可西里 更新时间:2023-11-01 10:13:52 24 4
gpt4 key购买 nike

在过去的几年里,我真的发现 Stackoverflow 非常有用,并决定创建一个帐户 - 这是我的第一篇文章。

示例情况 - 我有很多不同主题的图像 -

AAA_BBB_randomDigits_front.jpg
AAA_BBB_randomDigits_left.jpg
AAA_BBB_randomDigits_right.jpg

ZZZ_EEE_randomDigits_front.jpg
ZZZ_EEE_randomDigits_left.jpg
ZZZ_EEE_randomDigits_right.jpg

我希望它们都在文件夹中分组为 -

AAA_BBB_randomDigits\(contains left, front and right)
ZZZ_EEE_randomDigits\(contains left, front and right)

我目前的代码有效-

@echo off
for /f "tokens=1-3 delims=_" %%a in ('dir /b /a-d *_*_*_*.*') do (
md "%%a_%%b_%%c" 2>nul
move "%%a_%%b_%%c*" "%%a_%%b_%%c"
)
pause

但是,如果有人能向我解释,我会很高兴 -

  • %%a 是什么?
  • dir/b/a-d 是什么,我为什么需要它?
  • 是否需要关闭 @echopause?

谢谢你们,我真的很感激。

最佳答案

有关文档,请参阅命令名/?从提示。

dir/b/a-d filemask 执行目录列表 /b 仅指定文件名 - 没有大小、日期、页眉或页脚。 /a-d 排除目录名。

您需要它为 for/f 命令提供名称。

for/f 读取括号中的“文件名”(它可以是真实文件名或单引号命令(如 dir)或双引号文字string) 并根据指定的选项(紧跟在 /f)。

delims 选项指定哪一组字符用于解析来自指定"file"的数据行。然后该行被解释为一系列标记,由定界符序列分隔。默认情况下,delimsSpaceTab。使用 "...delims=" 完全关闭 delims 是很常见的,在这种情况下,只有一个标记(整行)。请注意,delims=" 之间的任何字符都是同等级别且区分大小写的 - 它是 set 分隔符,替换 SpaceTab,不是 delimiter-string

tokens 选项指定从 1 开始按编号选择哪些标记。特殊标记 * 表示“最高编号标记之后的行的其余部分指定(包括任何分隔符)”。默认情况下,tokens=1

%%a 是一个元变量。它是保存从 tokens= 列表中选择的第一个 token 编号的变量。每个选定的标记编号都按字母顺序分配给下一个元变量名称,因此在您的示例中,因为您有 tokens=1-3 然后 %%a 是第一个标记,%%b 第二个,%%c 第三个。 元变量 始终是一个字母(有时会使用一些其他字符 - 但绝对不允许使用数字)并且名称区分大小写(通常,批处理不区分大小写)。 %%a%%A%a% 都是不同的变量。 %a%%A%相同变量。

元变量 仅在创建它的 for 循环中有效。当 for 循环结束时,变量消失。

@echo off 只是关闭该批处理否则会产生的命令回显(在控制台上显示命令,然后执行它)。它用于减少显示器上的困惑。在调试一段代码的时候,将echo设置为on(echo on),然后再关闭(echo off) 以准确显示正在执行的指令。 @ 表示“不要向控制台报告此命令”

pause 只是等待,直到收到来自键盘的响应。它用于允许读取显示,而不是简单地直接继续执行下一条指令。它通常用于调试,如果批处理是通过点击和咯咯笑执行的,还允许为用户保留批处理的结果。

关于windows - 定义这些批处理命令,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48353508/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com