Batch Datei schreiben für Dateien umbenennen? Wo steckt der Fehler?

... komplette Frage anzeigen

2 Antworten

Das Script geht in die Hose, wenn ein Dateiname Leerzeichen enthält.

Mit Anführungszeichen könnte es besser klappen:

if "%%G"==rnlvq.bat (

und

ren "%%G" "!lvq!%%G"

Allerdings misstraue ich ITlern, die Batch-Scripte schreiben. Was würdet Du sagen, wenn Dir Dein Autohaus einen Ochsenkarren andrehen will?

Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von MrLight
14.07.2017, 19:01

:-D da hast du schon recht. Aber wie gesagt ich habe ja noch viel weniger Ahnung davon. Und mit wenigen Dateien (und jetzt wird ein Schuh draus weil die alle kein haben) hat es ja wunderbar funktioniert.

Vielen Dank für deine Antwort werde ich gleich mal testen.

0

Da hat dir dein IT Typ nen Code hingeklatscht, der keine Leerzeichen unterstützt.
Außerdem funktioniert die Batch nicht mehr, wenn du ihren Namen änderst und der Code lässt ein paar kleine Kürzungen zu...besser so:

@echo off & setlocal enableDelayedExpansion
set "count=1"

FOR %%G in (*.*) DO (
    if not "%%G"=="%~0" (
        echo benenne %%G in !count!%%G
        ren "%%G" "!count!%%G"
        set /a count+=2
    )
)
echo Finished.
pause >nul

~Tim


Antwort bewerten Vielen Dank für Deine Bewertung
Kommentar von timlg07
15.07.2017, 09:57

Mit einem

::...)
set /a num=(count/2)+1
echo Insgesamt %num% Dateien umbenannt.
::echo Fin...

zeigst du (hoffentlich) die Anzahl der Dateien an.

Wenn du das set "count=1" am Anfang durch folgenden Code ersetzt, kannst du die Batch für Ordner A und B hernehmen.

CHOICE /M [U]ngerade Zahlen [G]erade Zahlen /C UG
set "count=%errorlevel%"

Falls du die Batch nicht in die Ordner reinkopieren willst, kannst du so den Pfad angeben: (einfach vor oder nach dem CHOICE ^ einfügen) relative Pfäde (also zB. nur den Ordnernamen, wenn die Batch im Ordner darüber liegt) sollten auch gehen. 

set /p "p=Bitte den Pfad zu Ihrem Ordner angeben: "
cd /D "%p%"

Hier noch mal übersichtlich alles zusammen:

@echo off & setlocal enableDelayedExpansion

CHOICE /M [U]ngerade Zahlen [G]erade Zahlen /C UG
set "count=%errorlevel%" set /p "p=Bitte den Pfad zu Ihrem Ordner angeben: " cd /D "%p%"

FOR %%G in (*.*) DO (
if not "%%G"=="%~0" (
echo benenne %%G in !count!%%G
ren "%%G" "!count!%%G"
set /a count+=2
)
)
echo Finished.
pause >nul



1

Was möchtest Du wissen?