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

时间:2015-04-23 08:36:09

标签: batch-file subdirectory

我已经有了这个批处理代码:

@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字节备份。所以,如果我失去了它们,我会知道要重新下载什么。不应清除批处理文件本身。

此代码必须更改哪些内容才能在所有子文件夹中的所有文件上运行?

1 个答案:

答案 0 :(得分: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

编辑:添加了文件夹