【问题标题】:Batch file to copy the file from a specific folder and not the sub folders to the target folder将文件从特定文件夹而不是子文件夹复制到目标文件夹的批处理文件
【发布时间】:2016-10-23 10:30:39
【问题描述】:

我尝试执行以下脚本,它将最新文件从一个文件夹复制到另一个文件夹。但是我在不同的场景中测试了下面的脚本,如果它存在于 C:\Source 之外的子文件夹中,它甚至会复制文件 CC*.txt。 但我只想从下面脚本中提到的源目录(C:\Source)复制最新文件,但如果相同的新文件存在于任何文件夹/子文件夹中,则不应考虑,请建议.

FOR /F %%I IN ('DIR "C:\Source\cc*.txt" /B /A:-D /T:W /O:D /S') DO SET "LATEST=%%~I"
COPY "%LATEST%" "C:\Destination"

PS:主要是因为/S,但我不确定需要使用什么选项来仅从指定目录C:\Source中选择文件,请建议。

【问题讨论】:

    标签: batch-file cmd


    【解决方案1】:

    只需删除/S 选项(它告诉dir 也处理子目录):

    FOR /F %%I IN ('DIR "C:\Source\cc*.txt" /B /A:-D /T:W /O:D') DO SET "LATEST=%%~I"
    COPY "C:\Source\%LATEST%" "C:\Destination"
    

    由于没有/S 开关的dir /B 仅返回纯文件名,因此您需要再次在复制源中包含源位置,以便脚本可以在任何工作目录中运行。

    【讨论】:

      【解决方案2】:

      试试这个:

      for /f "tokens=*" %%A in ('dir /b /s /O:D "C:\Source\cc*.txt"') do set "latest=%%A" copy "%latest%" "C:\Destination"

      【讨论】:

        【解决方案3】:

        FOR /F %%I IN ('DIR cc*.txt /B /O:-D') DO COPY %%I "C:\Destination" & EXIT
        超级简单。


        FOR /F "delims=|" %%I IN ('DIR "cc*.txt" /B /O:D') DO COPY %%I "C:\Destination"

        两者都应该这样做

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 2017-12-07
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-03-31
          • 1970-01-01
          相关资源
          最近更新 更多