我正在尝试创建一个 bat 文件,我们可以每天使用它来将 PDF 文件从子文件夹(文件夹名称每天都不同)复制或移动到父文件夹。我尝试了以下方法:
首先尝试使用这个复制文件,但是没有用
copy "Y:\Print OPS\Annuity Ops\*\*.pdf" "Y:\Print OPS\Annuity Ops"
接下来我尝试列出要复制的文件并使用它来复制它们,该列表是由未复制的文件创建的。
Echo %date% Sweep Time = %time% File count = %cnt% > 000_testpdf.txt
echo.>>000_testpdf.txt
dir /b /s *.pdf, /O:N >> 000_testpdf.txt
set logfile=MSOffice_PDF.log
dir /b /s *.pdf, > 000_testpdf.txt
for /f "delims=" %%i in (000_testpdf.txt) do echo D|xcopy "Y:\Print OPS\Annuity Ops\%%i" "Y:\Print OPS\Annuity Ops%%i" /i /z /y
答案1
v - disallowed
copy "Y:\Print OPS\Annuity Ops\*\*.pdf" "Y:\Print OPS\Annuity Ops"
^ allowed
*
在 Windows 中,仅允许在路径的最后部分使用通配符。下一个代码片段可能会有所帮助:
@ECHO OFF
SETLOCAL EnableExtensions
set "_parent=Y:\Print OPS\Annuity Ops"
for /D %%G in ("%_parent%\*") do (
if exist "%%~G\*.pdf" (
echo copy /B "%%~G\*.pdf" "%_parent%\"
) else (
echo nothig to copy "%%~G\*.pdf" "%_parent%\"
)
)
笔记上面的代码仅仅显示器为调试目的而执行的命令。在调试后立即替换echo copy /B
为可操作的 。您也可以删除所有分支。copy /B
else
资源(必读):
- (命令参考)Windows CMD 命令行的 AZ 索引
- (其他细节)Windows CMD Shell 命令行语法
- (
%~G
等专题页面)命令行参数(参数) - (
for /D
环形)有条件地对多个目录/文件夹执行命令