我想知道怎么做,这就是我想要做的。
我的批处理文件将删除其所在文件夹的每个第n个文件。 我知道该文件应该如何运行,但我不知道要编写的代码行。
这个想法是:
例如,在100个文件中排序。我进入间隔5。 应保留每第5个文件。因此,运行批处理文件后应该只剩下20个文件。其他文件应该删除。
这是我走了多远
@echo off
title ImageDeleter
echo Delete every _ files?
set /p interval=
FOR /D %%interval IN (folder_set) DO del filename
exit
答案 0 :(得分:0)
1)首先,看起来你对批处理编程中的for
循环知之甚少。 %%interval
是一个很大的错误,没有人将指定的变量用作for
循环的变量,您应该使用%%a
或%%b
或其他代码。谷歌批量循环获取更多信息。
2)要按字母顺序对文件名进行排序,请使用dir /o:n
,其中n
表示您要排序的内容(名称)。
3)删除的文件不会转到回收站,这意味着您无法还原(否则您有文件恢复软件),因此请在想要删除它们之前再想一想。
4)在你提出有关stackoverflow的问题之前了解更多信息,并且不要留下任何代码让我们填写,我们基本上无法帮助你做到这一点。
如果路径中有任何更改,请在代码中更改它。如果您希望代码通过在执行期间输入路径来自动获取路径,请了解更多:)
@echo off
title ImageDeleter
setlocal enabledelayedexpansion
:main
cls
set /p interval=Interval=
set /a skip=5
set /a count_skip=0
set /a count=1
set /a number=1
cd c:\users\microsoft\desktop\del
for /f "tokens=5" %%a in ('dir /o:n c:\users\microsoft\desktop\del\') do (
if !count_skip! equ !skip! (
set /a count_skip-=1
if %%a equ free (
echo.
echo Finished!
pause >nul
exit /b
)
if !count! neq !interval! (
echo !number!. DELETED - %%a
del %%a
)
if !count! equ !interval! (
echo.
echo !number!. REMAINED - %%a
echo.
set /a count=0
)
set /a count+=1
set /a number+=1
)
set /a count_skip+=1
)
答案 1 :(得分:0)
在主题标题中,您说:“删除特定文件”。然后,你写道:“将删除每个第n个文件”(例如,如果N = 5删除文件5,10 15等),但后来你说:“我输入间隔5.每个第5个文件应该保留”(所以文件1,2,3,4 6,7,8,9 11,12,13,14等必须删除)。 ???
下面的第一个代码删除每个第n个文件,因此它将从100删除20个文件并保留80:
@echo off
setlocal EnableDelayedExpansion
title ImageDeleter
echo Delete every _ files?
set /p n=
set i=0
FOR %%a IN (file_set) DO (
set /A i+=1, iMODn=i %% n
if !iMODn! equ 0 del "%%a"
)
下一个代码保留每个第n个文件并删除其余文件,因此它将从100删除80个文件并保留20个:
@echo off
setlocal EnableDelayedExpansion
title ImageDeleter
echo Delete every _ files?
set /p n=
set i=0
FOR %%a IN (file_set) DO (
set /A i+=1, iMODn=i %% n
if !iMODn! neq 0 del "%%a"
)