Windows批处理脚本查找大于xxMB的文件并根据结果查找类似文件

问题描述 投票:0回答:1

我正在努力在 Windows 中进行一些批处理编程,但没有得到我想要的结果。 我确实有一个包含数百个文件的文件夹,其中始终包含一组 3 个文件:

BWMKE_PROD_DAP_WOTERM01_1000_1_280624_100320_5.pdf BWMKE_PROD_DAP_WOTERM01_1000_1_280624_100320_5_Archiv.xml BWMKE_PROD_DAP_WOTERM01_1000_1_280624_100320_5_Daten.xml

我现在会将所有文件大小达到特定阈值的 PDF 及其相应的 XML 文件移动到单独的文件夹中。 PDF 部分已经可以工作,但我如何识别/移动相应的 XML 文件? 预先感谢

BR 奥利弗

这就是我到目前为止所拥有的,但是 forfiles 给了我一个错误:找不到“*.xml 类型的文件。 我也尝试过 findstr,但没有运气

@echo off

setlocal enabledelayedexpansion

set "SOURCE_DIR=D:/AFI/S4I/D4P_Prod/Archive/PDF_Orig_Test"
set "DESTINATION_DIR=D:/AFI/S4I/D4P_Prod/Archive/TMP_Dir"
set "FILE_SIZE=5000000"

set "logfile=%date:\~-4%-%date:\~-7,2%-%date:\~-10,2%.log"

call :main
goto :EOF

:main
echo "%FILE_SIZE%" | findstr ""\[0-9\]\[0-9\]\*"" \> NUL
if errorlevel 1 (
echo An error occured
exit /b 1
)

for /R "%SOURCE_DIR%" %%F in ("*.*") do (
if exist "%%F" if %%\~zF GEQ %FILE_SIZE%  (
echo %%F \>\> "log_big_files/large_files\_%logfile%"
move "%%\~dpnF" "%DESTINATION_DIR%"
echo %%\~nF
forfiles /M "%%\~nF\*.xml" /C "cmd /C move \<RESULT\> "%DESTINATION_DIR%""
)
)
goto :EOF
windows
1个回答
0
投票

下面用于文件大小的语法是错误的:= %%\~zF 正确的语法: %%~zF

forfiles 语法也是错误的。您正在组合路径和文件掩码。 forfiles /M "%%~nF*.xml" 正确方法:forfiles /p C:\whateverpath /m *.xml

forfiles 命令中的 %%~nF 似乎放错了位置。 我也不明白为什么你在命令中使用 <\RESULT>\ 。

没有深入了解您正在尝试做什么以及您的脚本是否按正确的流程进行。

这是您需要开始的地方 请参阅 forfiles 文档。输入文件 /?在命令行中。 请阅读有关扩展用法的信息:https://ss64.com/nt/syntax-args.html

© www.soinside.com 2019 - 2024. All rights reserved.