CMD由于字符串屠宰而无法移动文件

时间:2013-12-25 13:00:35

标签: string batch-file for-loop cmd

我正在尝试将我的USB记忆棒格式化,以便在我的汽车中用作音乐数据库。 但是,我的收音机一次只能播放一个文件夹,所以我认为将艺术家的所有标题移动到艺术家的文件夹会很有帮助。

因为这就像32GB的音乐一样,需要手工完成很多工作。

我已经提出了以下脚本来完成这项工作(G:\是USB驱动器)

FOR /F %%T IN ('dir G:\ /B /A:D') DO (
    FOR /R %%D IN (G:\%%T\*.*) DO MOVE "%%d" "G:\%%T"
)

到目前为止,这有效,但'dir G:\ /B /A:D'命令最终以这种方式屠杀文件夹名称:“FOLDER NAME” - > “夹”。所以它基本上只是出于某种原因选择了第一个单词。

请帮忙。

2 个答案:

答案 0 :(得分:1)

FOR元变量是批量中区分大小写的少数几个地方之一。 %%D mst与%%d匹配 - 反之亦然。

(但你可能最好在"delims="和元变量...之间包含FOR/f,以确保将整个字符串分配给元变量。

答案 1 :(得分:0)

更改外部FOR命令:

for /f "tokens=*" %%T in ('dir /b /a:d "G:\"') DO (
 ...
)