Hier ist ein bisschen eine hacky Antwort.
Dieses Skript werden alle Dateien von file (1).txt
bis zu file (10).txt
File.txt bewegen, nur datei.txt verlassen, die nun den Text enthält, in der Datei war (10) .txt
es aufsteigend Dadurch wird sichergestellt die höchste Zahl ist die letzte, die bewegt wird.
@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
Sie könnten IF EXIST %name% (%%A).%ext%
verwenden das Skript zu stoppen versuchen, Dateien zu verschieben, die nicht existieren, aber sie nicht wirklich Einfluss auf irgendetwas, das zu tun, so dass ich nicht gestört.
Das obige Skript wird es für eine bestimmte benannte Datei tun. Zu tun, wird es für alle Dateien in einem Verzeichnis möglich sein, hier sind einige Hinweise, die Sie
gehend zu erhalten ein dir /b >filenames.txt
verwenden, um alle Dateien in einem Verzeichnis in einer Textdatei
aufgelistet zu bekommen, um eine Aktion für jede durchführen Zeile in einer Textdatei do
for /f "usebackq delims= tokens=* %%a in (`filenames.txt`)" DO (
::some stuff here
)
so wie ich darüber gehen würde, wäre filenames.txt zu erhalten, löschen Sie manuell alle (n) Dateien, so dass Sie nur noch eine Liste der „nicht-Duplikat“ Dateinamen, und benutze das als deine Eingabe. Sie
Es gibt wahrscheinlich mehr elegante Lösungen da draußen, aber mit all den Besonderheiten der Batch würde ich nicht überrascht sein, dass sie Seiten und Seiten lang sind.
Wenn Sie alle Original-Dateien behalten wollen nicht nur mit dem letzten datei.txt ohne Kopien am Ende, dann möchte ich Sie COPY
verwenden Wenn Sie alle Original-Dateien behalten möchten, dann sind Sie möchte COPY nicht MOVE verwenden.
In diesem Fall alle überflüssigen Operationen zu entfernen (dh nur die höchsten nummerierte Datei kopieren, nicht kopieren Sie alle Dateien um) dann so etwas wie IF NOT EXIST %name% (!B!).%ext%
wo !B!=%%A+1
in Ihrem (jetzt mehrzeilige) für Schleife und verwenden Setlocal EnableDelayedExpansion auf mache die Arithmetik richtig. Aber es ist nicht wirklich notwendig, Kopieren 1, dann 2, dann 3, dann 4 tut das gleiche, wenn ein wenig langsamer als überspringen 1 2 und 3 und nur 4.
Ich hoffe, das hilft genug, um Sie in der richtige Richtung, zögern Sie nicht, Fragen zu stellen, wenn dies nicht klar ist.
Was haben Sie als Code versucht? – Hackoo
Ich habe keine Ahnung, wie es geht. ich jetzt, wie for loops zu verwenden, wenn Bedingungen, Variablen festlegen, aber ich habe nicht viel Erfahrung. Meine erste Idee wäre, eine for-Schleife auszuführen und zu testen, ob "file (% i) .tex" existiert. Aber dann bin ich nicht sicher, wie es weitergeht ... –
Ich kann keine Frage in Ihrem Beitrag finden. Der Titel besagt, dass Sie etwas entfernen möchten, aber der "Frage" -Körper beschreibt nicht, was entfernt werden soll, sondern nur etwas über das Kopieren einer Datei auf ein anderes. Also bitte klar! Hat die Datei mit der größten Nummer auch das letzte Erstellungs- oder Änderungsdatum? Dann teile, was du bisher versucht hast und worüber du Probleme hast! Mit StackOverflow können Sie keine Skripte kostenlos anfordern! Lies dies: [Frage] – aschipfl