【问题标题】:Batch file Loop with spaces带有空格的批处理文件循环
【发布时间】:2013-08-26 01:48:45
【问题描述】:

我有一个烦人的小东西让我发疯。 我需要遍历一个目录并将子目录中包含的文件移动到另一个位置。

这适用于不包含任何空格的文件夹,但我有一些包含空格的目录,它们不起作用。 我尝试在文件位置周围添加一些“”,但这也不起作用。

这就是我所拥有的:

for /f "usebackq" %%m in (`dir /b D:\adir\dir with spaces`) do (
    MOVE /Y "D:\adir\dir with spaces\%%m\*.*" "D:\bdir\dir with spaces"
    RD /q D:\adir\dir with spaces\%%m
) 

【问题讨论】:

标签: file loops batch-file directory


【解决方案1】:

我要做的第一件事是在括号内和 RD 命令中加上引号:

for /f "usebackq" %%m in (`dir /b "D:\adir\dir with spaces"`) do (
    MOVE /Y "D:\adir\dir with spaces\%%m\*.*" "D:\bdir\dir with spaces"
    RD /q "D:\adir\dir with spaces\%%m"

那我看看怎么样……

这(带引号)“适合我”:

@echo off
for /f "usebackq" %%m in (`dir /b "z:\dir with spaces"`) do (
    dir "z:\dir with spaces\%%m"
)

这(不带引号)不起作用:

@echo off
for /f "usebackq" %%m in (`dir /b z:\dir with spaces`) do (
    dir z:\dir with spaces\%%m
)

【讨论】:

  • 试过了,但是没有取文件-结果显示:系统找不到指定的文件。
  • OMFG!你不会相信发生了什么——我把该死的目录名弄错了。很抱歉浪费了您的时间。但“引号”确实有效。
  • @Rik:不要感到羞耻,它一直在发生,发生在我们所有人身上。 :)
【解决方案2】:
for /f "delims=" %%m in ('dir /b /ad "D:\adir\dir with spaces"') do (
    MOVE "D:\adir\dir with spaces\%%~m\*" "D:\bdir\dir with spaces"
    RD "D:\adir\dir with spaces\%%~m"

【讨论】:

    猜你喜欢
    • 2012-08-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多