如何清除但不删除除批处理文件以外的所有子文件夹中的所有文件?

How to clear but not delete all files in all subfolders with exception of the batch file?

我已经有了这个批号:

@echo off
setlocal
:PROMPT
SET /P AREYOUSURE=Are you sure (Y/[N])?
IF /I "%AREYOUSURE%" NEQ "Y" GOTO END
@echo off
pushd %*
for %%j in (*) do if /I not "%%j"=="%~nx0" type nul > "%%j"
popd

我想为所有子文件夹中的所有文件创建一个 0 字节备份。因此,如果我丢失了它们,我会知道要重新下载什么。不应清除批处理文件本身。

对于所有子文件夹中的所有文件,此代码必须更改为 运行 什么?

FORFILES是你的朋友!语法是:

forfiles [/p <Path>] [/m <SearchMask>] [/s] [/c "<Command>"] [/d [{+|-}][{<Date>|<Days>}]]

/s 选项将使您的脚本查看子文件夹。这应该有效:

@echo off
setlocal
:PROMPT
SET /P AREYOUSURE=Are you sure (Y/[N])?
IF /I "%AREYOUSURE%" NEQ "Y" GOTO END
FORFILES /S /C "CMD /C IF @ISDIR==FALSE IF NOT @FILE==\"%~nx0\" type nul > @PATH"

FORFILES 结构中可能的变量是:

  • @FILE: 文件名。
  • @FNAME: 不带扩展名的文件名。
  • @EXT: 文件扩展名。
  • @PATH: 文件的完整路径。
  • @RELPATH:文件的相对路径。
  • @ISDIR:如果文件类型是目录,则计算结果为 TRUE。否则,此变量的计算结果为 FALSE。
  • @FSIZE: 文件大小,以字节为单位。
  • @FDATE:文件上的最后修改日期戳。
  • @FTIME: 文件的最后修改时间戳。

有关详细信息,请查看 https://technet.microsoft.com/en-us/library/cc753551.aspx

编辑:添加了跳过文件夹