如何清除但不删除除批处理文件以外的所有子文件夹中的所有文件?
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。
编辑:添加了跳过文件夹
我已经有了这个批号:
@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。
编辑:添加了跳过文件夹