Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
GELÖST

Wort via Batch aus Dateinamen entfernen

Frage Entwicklung Batch & Shell

Mitglied: ichduersiees

ichduersiees (Level 1) - Jetzt verbinden

09.09.2012 um 11:12 Uhr, 4822 Aufrufe, 2 Kommentare

Hallo an alle,

ich wollte mir auf die Schnelle ein Batch-File erstellen, das aus einem Dateinamen ein bestimmtes Wort entfernt.
Leider hatte ich mit Batch noch nie viel am Hut, das letzte mal vor ein paar Jahren.

Ich habe zum Testen 3 Dateien:
Test Eins.txt
Test Zwei.txt
Test Drei.txt

Ziel ist, das "Test" aus dem Dateinamen zu entfernen.

Mein Script:

For %%i in (*.txt) do set iinput=%%i
set string=%iinput:Test =%
rename "%iinput%" "%string%"
pause

Funktionieren tut es, "Test Zwei.txt" wird in "Zwei.txt" Umbenannt, die anderen Dateien aber nicht. Man sieht im CMD Fenster das er erst alle Dateien durch geht und nur die letzte Datei umbenennt.

Was muss ich ändern oder Hinzufügen damit er ALLE Dateien mit einem "Test" am Anfang und einem ".txt" am Ende umbenennt?




Über ein Fertiges Script würde ich mich sehr freuen!
Ich weiß das viele es nicht leiden können, da man ja aus der Frage lernen soll. Ich arbeite aber sonst nie mit Batch, ich brauche nur eine Simple Lösung um meine Dateien Umzubenennen.




Vielen Dank im voraus!
Mitglied: 60730
09.09.2012, aktualisiert um 11:22 Uhr
Moin,

Nein......
Wenn du was fertiges suchst, dann suche bitte danach, das gibt es in jeder farbe und koerbchengroesse

Auch ein tut zum schleifenbinden gibts hier.

Ps du hast es doch erkannt, das ist wie mathe, punkt vor strich oder zeile fuer zeile (ausser man verlaengert die zeile durch () eine klammer)

Also genauso wie bei der mathematik auch.

Gruss
Bitte warten ..
Mitglied: Leopold.Bloom
10.09.2012 um 16:07 Uhr
Hi,

Dein Script arbeitet in der For Schleife nur einen Befehl ab, nämlich set iinput=%%i. Deine anderen Befehle liegen außerhalb der Schleife und werden nur einmal abgearbeitet. Mit der letzten gefundenen Datei.

Wenn Deine Schleife mehrere Befehle abarbeiten soll, müsstest Du die Befehle in Klammern setzen.

01.
For %%i in (*.txt) do ( 
02.
     set iinput=%%i 
03.
     set string=%iinput:Test =% 
04.
     rename "%iinput%" "%string%" 
05.
06.
 
Das Script würde aber so auch scheitern, weil Variablen innerhalb einer Schleife nur dann einen neu zugewiesenen Wert verarbeiten, wenn setlocal enabledelayedexpansion gesetzt ist. Spätestens in Zeile 3 gäbe es da Probleme. Einfacher wäre dies hier. In der Schleife lesen. Außerhalb der Schleife arbeiten.


01.
@echo off 
02.
for /f "delims=" %%i in ('dir /B *.txt') do call :umbenennen "%%~i" 
03.
goto :eof 
04.
 
05.
:umbenennen 
06.
set alter_name=%1 
07.
set neuer_name=%alter_name: test=% 
08.
rename %alter_name% %neuer_name% 
09.
goto :eof 
10.
 
LG aus HH

Leo
Bitte warten ..
Ähnliche Inhalte
Sonstige Systeme
Batch Dateinamen zerlegen (5)

Frage von Mummel zum Thema Sonstige Systeme ...

Batch & Shell
gelöst Dateinamen mit Batch-Datei ändern - Problem (9)

Frage von fffffuuuuuuuhhhh zum Thema Batch & Shell ...

Batch & Shell
gelöst Einen Teil eines Textpfades aus einer TXT per Batch entfernen!? (3)

Frage von kampen zum Thema Batch & Shell ...

Batch & Shell
gelöst Zeilenumbruch-Zeilen-Vorschub entfernen? (Batch) (9)

Frage von clragon zum Thema Batch & Shell ...

Neue Wissensbeiträge
Tipps & Tricks

Wie Hackt man sich am besten in ein Computernetzwerk ein

(29)

Erfahrungsbericht von Herbrich19 zum Thema Tipps & Tricks ...

Humor (lol)

Bester Vorschlag eines Supporttechnikers ever: APC

(15)

Erfahrungsbericht von DerWoWusste zum Thema Humor (lol) ...

Windows Server

Exchange 2010 Active Directory und Windows Server 2016

(4)

Erfahrungsbericht von Herbrich19 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Internet
gelöst Mitarbeiter surft auf unerwünschter Seite - Wie damit umgehen? (44)

Frage von sabines zum Thema Internet ...

Netzwerke
Wie erstelle ich ein Intranet (19)

Frage von Leonardnet zum Thema Netzwerke ...

LAN, WAN, Wireless
gelöst Eintägige Netzwerkunterbrechung trotz Backupleitung (15)

Frage von iAmbricksta zum Thema LAN, WAN, Wireless ...

Windows Server
Server 2012 R2 - Zugriff Verweigert bei jeglicher Tätigkeit (13)

Frage von DarkLevi zum Thema Windows Server ...