【问题标题】:Batch file "do move" not relocating files to specified directory批处理文件“移动”不将文件重新定位到指定目录
【发布时间】:2015-09-03 15:13:53
【问题描述】:

我创建了一个批处理文件来扫描一个目录,其中包括 Solidworks 文件扩展名(.slddrw、.sldprt、.sldasm)的子目录,并将它们移动到存档目录。我遇到的问题是移动没有移动到我的 Archive 目录,而是将文件移动到 Archive 的父目录,即 Archive_Test强>

这是我正在使用的代码:

::cd G:\OPS\OpsEng\Document
cd c:\Archive_Test

::Make the Archive directory in case it does not already exist
MD Archive

::SET @From="G:\OPS\OpsEng\Document"
SET @From="C:\Archive_Test\Document"

::SET @To="G:\OPS\OpsEng\Archive"
SET @To="C:\Archive_Test\Archive\"

pause

::Move files with Solidworks extensions
for /R %From% %%f in (*.slddrw, *.sldasm, *.sldprt) do move "%%f" "%To%"

pause

【问题讨论】:

    标签: batch-file


    【解决方案1】:

    这不起作用,因为您以错误的方式设置变量/以后不要以它们的名称调用它们(您设置了“@To”并使用“To”)。

    例如:

    C:\Users\equinox93>SET @From="C:\Archive_Test\Document"
    
    C:\Users\equinox93>echo %@From%
    "C:\Archive_Test\Document"
    
    C:\Users\equinox93>echo %From%
    %From%
    

    所以要修复它,只需在设置它们时删除“@”:

    ::cd G:\OPS\OpsEng\Document
    cd c:\Archive_Test
    
    ::Make the Archive directory in case it does not already exist
    MD Archive
    
    ::SET From="G:\OPS\OpsEng\Document"
    SET From="C:\Archive_Test\Document"
    
    ::SET To="G:\OPS\OpsEng\Archive"
    SET To="C:\Archive_Test\Archive\"
    
    pause
    
    ::Move files with Solidworks extensions
    for /R %From% %%f in (*.slddrw, *.sldasm, *.sldprt) do move "%%f" "%To%"
    
    pause
    

    这应该可行。 您可以在此处阅读有关“设置”命令的更多信息: http://ss64.com/nt/set.html

    【讨论】:

    • move "%%f" "%To%" 更改为echo move "%%f" "%To%" 以进行调试,您将看到类似move "C:\Archive_Test\Document\a.slddrw" ""C:\Archive_Test\Archive\"" 的内容,目标目录在加倍 双引号中。因此,请再次阅读您的链接并使用SET "To=C:\Archive_Test\Archive\" 而不是SET To="C:\Archive_Test\Archive\"(当然还有set "From=etc.")。
    猜你喜欢
    • 2016-08-03
    • 2013-04-21
    • 1970-01-01
    • 1970-01-01
    • 2012-07-24
    • 1970-01-01
    • 2016-08-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多