我有一个根文件夹:C:\Users\用户名\Desktop\New 文件夹,其中包含如下命名的 .mp3 文件:
20162406_3346_234958_97270791720411
20162305_3315_163017_97620734220699
我尝试创建一个批处理,按第 4 系列数字的前 5 位数字(在本例中为 97270 或 97620)对它们进行排序,创建以此命名的文件夹,然后将所有文件移动到其特定文件夹中。
以下是我的想法:
@ECHO OFF
SETLOCAL ENABLEDELAYEDEXPANSION
set "sourcedir=C:\Users\username\Desktop\New folder"
for /f "tokens=1,2,3,4 delims=_" %%a in ('dir /b /a-d *_*_*_*.mp3') do (
set x= %%d
set y= !x:~1,5!
mkdir "!y!" 2>nul
move "%%a_%%b_%%c_%%d" "!y!"
)
endlocal
它可以工作!但是,我想知道如何在文件夹名称中添加文本,例如将创建的文件夹命名为:
97270 - Bla Bla Bla 或
布拉布拉布拉 - 97270
“Bla Bla” 不应依赖于文件名中的任何内容,而应由用户在批处理中设置。
我还没有找到它的正确语法。
答案1
在查看了 SuperUser、SS64 和通过 Google 搜索找到的其他随机网站上的一些其他主题后,我决定将“重命名”命令与“IF”和“Else”组合使用。
嵌套“IF”和“Else”并不容易,所以我删除了“Else”,只使用了“IF”——成功了!
'对于/f %% a在('dir /b /d *')中执行(
IF %%a EQU 97270(重命名“%%a” “%%a - Pens&Payroll”)
IF %%a EQU 97730(重命名“%%a” “%%a - Informare ERB”)
IF %%a EQU 97720(重命名“%%a” “%%a - 丢失”)
IF %%a EQU 97620(重命名“%%a” “%%a - 信用卡”)
)'