我有一個名爲文件的列表:批處理腳本刪除「重複」的文件
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