Ich verstehe nicht, warum Sie keine Batch-Datei verwenden können. Aber hier ist eine Lösung, die mit den meisten Dateinamen funktionieren sollte.
Kritisch - zuerst müssen Sie sicherstellen, dass Sie einen nicht definierten Variablennamen haben, werde ich verwenden fname
set "fname="
Als nächstes ist der Befehl, um tatsächlich die Umbenennung zu tun. Es wird nicht richtig funktionieren, wenn fname bereits definiert ist.
for %a in (prefix*.txt) do @(set "fname=%a" & call ren "%fname%" "%fname:*prefix=%")
Die fname Variable wird für jede Iteration definiert, und dann wird die Syntax %fname:*prefix=%
ersetzt das erste Auftreten von „prefix“ mit nichts. Die heikle Sache ist Windows erste Versuche,% fname% zu erweitern, wenn der Befehl zuerst geparst wird. Das wird natürlich nicht funktionieren, weil es noch nicht definiert wurde. In der Befehlszeile werden die Prozentwerte beibehalten, wenn die Variable nicht gefunden wird. Der CALL verursacht eine zusätzliche Erweiterungsphase, die auftritt, nachdem die Variable festgelegt wurde, damit die Erweiterung funktioniert.
Wenn fname vor dem Ausführen des Befehls definiert ist, wird einfach versucht, die gleiche Datei für jede Iteration anstelle des Werts, der innerhalb der Schleife zugewiesen wird, umzubenennen.
Wenn Sie den Befehl erneut mit einem anderen Präfix ausführen möchten, müssen Sie die Definition zuerst erneut löschen.
EDIT - Hier ist eine Batch-Datei "RemovePrefix.bat" genannt, die den Job
::RemovePrefix.bat prefix fileMask
@echo off
setlocal
for %%A in ("%~1%~2") do (
set "fname=%%~A"
call ren "%%fname%%" "%%fname:*%~1=%%"
)
Sie Dateien wie "prefixName.txt"
genannt hatte Angenommen, der Fall ist, dann würden Sie das Skript von
RemovePrefix "prefix" "*.txt"
Ausführung
Die Stapeldatei wird Dateien in Ihrem aktuellen Verzeichnis umbenennen. Die Stapeldatei muss sich auch in Ihrem aktuellen Verzeichnis befinden, es sei denn, die Stapeldatei befindet sich in einem Verzeichnis, das sich in Ihrer PATH-Variablen befindet. Oder Sie können den vollständigen Pfad zur Stapeldatei angeben, wenn Sie sie aufrufen.
Die Regeln für die Erweiterung unterscheiden sich in einer Batch-Datei.FOR-Variablen müssen als %% A anstelle von% A referenziert werden, und %% fname %% wird nicht zuerst erweitert, stattdessen werden die doppelten Prozente in einzelne Prozente konvertiert und dann wird% fname% nach der CALL-Anweisung erweitert. Es spielt keine Rolle, ob fname bereits mit der Batch-Datei definiert ist. SETLOCAL macht die Definition von fname temporär (lokal) für die Batch-Datei.
Diese Befehle scheinen nicht einmal gut mit sehr großen Verzeichnissen zu funktionieren. Es fügt weiterhin Präfixen zu Dateien hinzu, denen bereits ein Präfix hinzugefügt wurde. – hnviet