工作代码:

工作代码:

我正在尝试找出一种方法,让批处理脚本覆盖特定目录及其子文件夹中非零字节文件的每个实例。我猜想,由于我正在寻找非零文件,如果它找不到任何非零大小的文件,我可能会用转义符循环它?

例如,覆盖 example.txt 的每个非零文件大小实例:

D:\
\---SubFolder1
    |   example.txt <10 bytes>
    |
    \---Subfolder2
        |   example.txt <0 bytes>
        |
        \---Subsubfolder1
                example.txt <20 bytes>

在示例中,D:\Subfolder1\example.txt 和 D:\Subfolder2\Subsubfolder1\example.txt 将被覆盖,但 D:\Subfolder2\example.txt 不会被更改。

感谢@NiKiZe 的所有帮助!

工作代码:

@ECHO 关闭

设置 DPATH=%~dp0

FOR /R "%DPATH%" %%F 在(*** 见下文) 如果 %%~zF 则执行超级贸易 国家质量监督检验中心0 调用:NonEmptyFile "%%~F"
GOTO:EOF

:NonEmptyFile
ECHO 得到非空文件:%1
呼叫 :EOF

*** 用您想要替换的文件名替换,确保在某处使用单个字符通配符(我在扩展中使用它 - 例如,如果我正在搜索 example.txt,我将 * 替换为 example.t?t)

答案1

遍历给定路径和所有子文件和子路径的最小批次,调用NonEmptyFile每个非空文件的标签。

@ECHO OFF

SET DPATH=%~dp0

FOR /R "%DPATH%" %%F IN (*) DO IF %%~zF GTR 0 CALL :NonEmptyFile "%%~F"
GOTO :EOF

:NonEmptyFile
  ECHO Got non empty file: %1
CALL :EOF

%~1通过在函数中使用它将被扩展,您可以使用类似COPY /Y "somefile.txt" "%~1" “未指定如何覆盖文件”之类的东西。

创建“空文件”的另一种方法是ECHO. > "%~1"

解释:

  • FOR /R "%DPATH%" %%F IN (*) DO遍历每个文件
  • IF %%~zF GTR 0如果文件大小大于...
  • CALL :NonEmptyFile "%%~F"调用:NonEmptyFile转义文件名的标签

要在提示时测试这一点,请使用FOR /R "D:\SubFolder1\" %F IN (*) DO IF %~zF GTR 0 ECHO NonEmptyFile "%~F"

有关如何工作的更多信息,请通过运行for获得for /?cmd

相关内容