我想编写一个批处理,将给定源路径中的所有文件复制到给定的输出路径,并绘制实际更改的文件的目标路径。 XCOPY几乎就是这么做的。它绘制了源路径。
我想PowerShell会更容易,但我宁愿把它保存在bat文件中。
答案 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
语句以执行您需要的操作。