我有一个名为文件的列表:批处理脚本删除“重复”的文件
file.txt file (1).txt file (2).txt
等
凡大于(数)更新的最后一个文件。
我想要一个.bat
脚本,它允许获取file (maxnumer).txt
到file.txt
的内容。
我有一个名为文件的列表:批处理脚本删除“重复”的文件
file.txt file (1).txt file (2).txt
等
凡大于(数)更新的最后一个文件。
我想要一个.bat
脚本,它允许获取file (maxnumer).txt
到file.txt
的内容。
dir /B /OD /TW file*.txt
按上次写入时间的排序顺序列出文件名(参见dir /?
)。
下一页评论批处理脚本能为你做的工作:
@echo OFF
SETLOCAL EnableExtensions
rem delete empty `_lastfile` variable
set "_lastfile="
rem store file name of last written time into `_lastfile` variable
for /F "delims=" %%G in ('dir /B /OD /TW file*.txt 2^>NUL') do set "_lastfile=%%~G"
rem ↑↑↑↑↑↑ suppress errors
rem check the `_lastfile` variable
rem is defined?
rem AND is different from "file.txt"?
if defined _lastfile if /I "%_lastfile%" NEQ "file.txt" copy /Y "%_lastfile%" "file.txt"
资源(必读):
%~G
等特殊页面)Command Line arguments (Parameters)2>NUL
等特殊页)Redirection非常感谢你 –
比我的答案更好,做得好:) –
这是一个hacky答案。
该脚本将偏离file (1).txt
所有文件备份到file (10).txt
到FILE.TXT,只留下file.txt的它现在包含名为.txt
那是在文件中的文本(10)按升序排列否则它将确保存在的最高数字是最后一个要移动的数字。
@echo off
set /P name=Enter name of file without extension:
echo enter extension:
set /P ext=.
echo. & echo.
echo these actions will be performed: & echo.
FOR /L %%A IN (1,1,10) DO @echo move /y "%name% (%%A).%ext%" "%name%.%ext%"
echo. & pause & echo.
FOR /L %%A IN (1,1,10) DO move /y "%name% (%%A).%ext%" "%name%.%ext%"
pause
你可以使用IF EXIST %name% (%%A).%ext%
要试图移动不存在的文件停止脚本,但它并没有真正影响到什么做到这一点,所以我没有理会。
上面的脚本将为特定的命名文件执行此操作。要做到这一点对目录中的所有文件都将是可能的,这里有一些提示,让你去
使用dir /b >filenames.txt
获得在一个文本文件中列出的目录中的所有文件
执行,每一个动作在一个文本行做
for /f "usebackq delims= tokens=* %%a in (`filenames.txt`)" DO (
::some stuff here
)
我会去了解它的方式是让filenames.txt,手动删除所有的(n)的文件,所以你只是有“不重复”的文件名列表,并将其用作您的输入。你
有可能是更优雅的解决方案,但具有所有批次的特点我不会惊讶地发现他们是页面和页面长。
如果要保留所有的原始文件没有就这样结束了,没有复制最终file.txt的,那么我想你如果要保留所有的原始文件使用COPY
,那么你会想要使用COPY而不是MOVE。
在这种情况下,去除所有多余的操作(即只复制最高编号的文件,而不是复制所有以文件),然后像IF NOT EXIST %name% (!B!).%ext%
其中!B!=%%A+1
你(现在的多)内的循环和使用SETLOCAL EnableDelayedExpansion使算术正常工作。但它不是真的必要,复制1,然后2,然后3,然后4做同样的事情,如果比跳过1 2和3,只是做4慢一点。
我希望这有助于指出你在如果不清楚,请随时提问。
那你尝试作为代码? – Hackoo
我不知道该怎么做。我现在如何使用循环,如果条件,设置变量,但我没有太多的经验。 Mi第一个想法是运行for循环并测试“file(%i).tex”是否存在。但后来我不知道如何着手...... –
我在你的文章中找不到问题。标题说你想删除某些东西,但“问题”主体并没有描述要删除的东西,而只是说将某个文件复制到另一个文件中。所以请澄清!具有最多号码的文件是否也有最新的创建或修改日期?然后分享你迄今为止所尝试的以及你遇到的问题! StackOverflow不是免费索取脚本的地方!阅读此:[问] – aschipfl