复制文件并输出覆盖文件的目标路径

时间:2016-01-11 16:35:54

标签: batch-file xcopy

我想编写一个批处理,将给定源路径中的所有文件复制到给定的输出路径,并绘制实际更改的文件的目标路径。 XCOPY几乎就是这么做的。它绘制了源路径。

我想PowerShell会更容易,但我宁愿把它保存在bat文件中。

3 个答案:

答案 0 :(得分:3)

扩展Sumit对/ F选项的建议 - 您可以使用FOR / F来仅解析目标文件。不需要批处理脚本。它可以是交互式命令行上的一个衬垫。

for /f "delims=> tokens=2" %A in ('xcopy /f "someSourcePath\*.txt" "someDestinationPath"') do @echo %A

以上将在每行输出中包含不需要的前导空格。如果需要,您可以使用额外的FOR / F来移除前导空格。

for /f "delims=> tokens=2" %A in ('xcopy /f "someSourcePath\*.txt" "someDestinationPath"') do @for /f "tokens=* delims= " %B in ("%A") do @echo %B

无论哪种方式,最后的文件数也会被删除。

如果将命令放在批处理脚本中,则将所有%加倍为%%

如果您拥有我的JREPL.BAT regular expression text processing utility - 一个纯粹基于脚本的实用程序(混合JScript /批处理),解决方案甚至更简单,该实用程序可以在XP之后的任何Windows机器上本机运行。

xcopy /F "someSourcePath\*.txt" "someDestinationPath" | jrepl "> (.*)" $1 /jmatch

如果您想在结尾处保留文件计数,那么您可以使用更简单的变体

xcopy /F "someSourcePath\*.txt" "someDestinationPath" | jrepl "^.*> " ""

答案 1 :(得分:2)

您可以在F

中打开源路径和新目的地路径以及xcopy开关

考虑这个例子

xcopy * DRIVE-LETTER:\New\ /F

将以此格式输出

F:\OLD-FOLDER\DSCN.JPG -> F:\New\DSCN.JPG
F:\OLD-FOLDER\DSCN1.JPG -> F:\New\DSCN1.JPG

答案 2 :(得分:1)

此脚本有两个参数:source dir和dest dir 这是一个功能性的例子。 (您需要自定义输出以满足您的需要。)脚本不会检查错误。您可能(或可能不)希望这样做。

@SETLOCAL ENABLEDELAYEDEXPANSION
@ECHO OFF

REM

SET "SRC_PATH=%~1"
SET "DST_PATH=%~2"

MKDIR "%DST_PATH%"

REM  Copy the files
FOR %%f IN (%SRC_PATH%\*.*) DO (
    SET "SRC_FILE=%%~f"
    SET "DST_FILE=%DST_PATH%\%%~nxf"

    @ECHO SOURCE FILE: !SRC_FILE!
    @ECHO DEST FILE  : !DST_FILE!
    COPY "!SRC_FILE!" "!DST_FILE!"
)

REM  Recursively descend into the subdirectories
FOR /D %%d IN (%SRC_PATH%\*.*) DO (
    SET "SRC_SUBDIR=%%~d"
    SET "DST_SUBDIR=%DST_PATH%\%%~nxd"

    @ECHO SOURCE DIR: !SRC_SUBDIR!
    @ECHO DEST DIR  : !DST_SUBDIR!
    cmd /c %~s0 "!SRC_SUBDIR!" "!DST_SUBDIR!"
)

更改ECHO语句以执行您需要的操作。