Top-Themen

Aktuelle Themen (A bis Z)

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

Frage Entwicklung Batch & Shell

GELÖST

Problem mit Batch beim Umbenennen von Leerzeichen

Mitglied: sabine1

sabine1 (Level 1) - Jetzt verbinden

04.01.2010 um 17:39 Uhr, 5821 Aufrufe, 3 Kommentare

Hallo Alle,

Ich habe ein kleines Problem mit einem Batch Script beim Umbenennen.
Die Beschreibung.
Ich habe eine Batch (Unter Vista) gemacht die bei allen Dateien die
ein Leerzeichen haben das in ein "_" (Underline) umbenennt.

Das Ergbenis ist seltsam.
Es geht sofort wenn ich in einem Directory wie C:\Dateien\ oder D:\Bilder\ bin.
Wenn ich aber im Wurzel Verzeichnis wie C:\ oder D:\ das Batch aufrufe
bekomme ich immer den Fehler "Datei nicht gefunden" und es geht in einen Endlos Loop.

Was mache ich falsch oder was muß ich noch machen damit es überall geht?
Hier ist das Batch

@echo on
:begin_leerzeichen
for /F "tokens=1,*" %%i in ('dir /b "* *"') do ren "%%i %%j" "%%i_%%j"
if exist "* *" goto begin_leerzeichen

Grüße
Sabine
Mitglied: bastla
04.01.2010 um 18:21 Uhr
Hallo sabine1 und willkommen im Forum!

Ich würde das eher so versuchen:
01.
@echo on & setlocal 
02.
for /F "delims=" %%i in ('dir /b /a-d "* *" 2^>nul') do call :ProcessFile "%%i" 
03.
goto :eof 
04.
 
05.
:ProcessFile 
06.
set "Name=%~nx1" 
07.
ren %1 "%Name: =_%" 
08.
goto :eof
Damit sollte es (durch ein zusätzliches "/s" beim "dir") dann auch möglich sein, gleich alle Dateien in ev Unterordnern mit zu bearbeiten ...

Grüße
bastla
Bitte warten ..
Mitglied: sabine1
04.01.2010 um 20:20 Uhr
Hi Bastla,

super danke funktioniert einwandfrei.!!
Allerdings ist eine kleine Sachen vom Verständnis noch nicht ganz klar und ich baue auch gerade an einer Erweiterung
wo ich Deinen Rat Bitte auch gerne hätte. Bei Deinem Batch ist mir nur die Zeile set "Name=%~nx1" nicht ganz klar.
Wieso ~nx1 ? Das ren %1 ist dann schon wieder klar.

Ich habe das Batch so erweitert das auch "-" mit "_" und "(" und ")" mit "_" ersetzt werden.
Dabei kann es aber vorkommen das bei einem File z.B.:
name-( Name ).pdf
XXX
durch ersetzen 3x "_" also "___" entstehen.
Die würde ich auch gerne wieder mit nur einem "_" ersetzen.
Ideal wäre eine Sache die alle "_" die hintereinander mehr als 2 mal vorkommen mit nur einem "_" ersetzen.

Ich habe das versucht
:begin_underline_underline
for /F "tokens=1,* delims=_" %%i in ('dir /b /a-d-h "*__*" 2^>nul') do ren "%%i__%%j" "%%i_%%j"
if exist "*__*" goto begin_underline_underline

:begin_underline_underline_underline
for /F "tokens=1,* delims=_" %%i in ('dir /b /a-d-h "*___*" 2^>nul') do ren "%%i___%%j" "%%i_%%j"
if exist "*___*" begin_underline_underline_underline

bekomme aber immer nur "Das System kann die angegebene Datei nicht finden."

Wie muß ich das umbauen das es geht?

Viele Grüße
Sabine
Bitte warten ..
Mitglied: bastla
04.01.2010 um 20:42 Uhr
Hallo sabine1!

Das könnte dann etwa so aussehen:
01.
@echo on & setlocal 
02.
for /F "delims=" %%i in ('dir /b /a-d 2^>nul') do call :ProcessFile "%%i" 
03.
goto :eof 
04.
 
05.
:ProcessFile 
06.
set "Name=%~nx1" 
07.
set "Name=%Name: =_% 
08.
set "Name=%Name:(=_% 
09.
set "Name=%Name:)=_% 
10.
set "Name=%Name:-=_% 
11.
 
12.
:Loop 
13.
set "Name=%Name:__=_%" 
14.
echo %Name%|findstr "__">nul && goto :Loop 
15.
 
16.
ren %1 "%Name%" 
17.
goto :eof
Noch Zum Thema "%~nx1": Damit wird aus dem Parameter 1 nur der Dateiname und die Extension entnommen - solange Du das "dir" ohne "/s" verwendest, wäre diese Schreibweise nicht nötig; wenn allerdings als "%1" ein vollständiger Pfad übergeben wird, muss für das Umbenennen daraus Name + Extension extrahiert werden (also aus zB "D:\Test\Unterordner\name-( Name ).pdf" wird dann nur "name-( Name ).pdf" verwendet). Näheres dazu findest Du ziemlich am Ende der Hilfe zu "for" ...

[Edit] Ev ließe sich das Reduzieren mehrfacher "_" mit der folgenden, vor Zeile 13 einzufügenden, zusätzlichen Zeile noch etwas beschleunigen:
set "Name=%Name:___=_%"
[/Edit]

Grüße
bastla

P.S.: Falls Du die "Code"-Formatierung bereits gesucht haben solltest: siehe hier ...
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
BATCH: Leerzeichen im Registry Pfad
gelöst Frage von 118710Batch & Shell1 Kommentar

Hallo zusammen, dies ist mein erste Beitrag hier und ich hoffe ich bin richtig :P So! Erst ein mal ...

Batch & Shell
Batch: doppeltes Leerzeichen in Dateinamen?
gelöst Frage von WoswaasiBatch & Shell3 Kommentare

Hallo! Wir verarbeiten bei uns in der Arbeit Audio-Dateien, die über Nacht in 5-Minuten-Abschnitte gesplittet werden. Ich habe dafür ...

Batch & Shell
Batch Variable setzten mit Leerzeichen
gelöst Frage von Marlon1Batch & Shell3 Kommentare

Hallo :) Ich würde gerne das man mit "set /p code= " 2 Wörter in die Variable "code" setzen ...

Batch & Shell
Leerzeichen per Batch entfernen vor der Weiterbearbeitung
gelöst Frage von daHartlBatch & Shell3 Kommentare

Hallo zusammen, gibt es eine Möglichkeit, per Batch alle Leerzeichen in einem Dateinamen durch "-" zu ersetzten? Das Leerzeichen ...

Neue Wissensbeiträge
Linux

Meltdown und Spectre: Linux Update

Information von Frank vor 1 TagLinux

Meltdown (Variante 3 des Prozessorfehlers) Der Kernel 4.14.13 mit den Page-Table-Isolation-Code (PTI) ist nun für Fedora freigegeben worden. Er ...

Tipps & Tricks

Solutio Charly Updater Fehlermeldung: Das Abgleichen der Dateien in -Pfad- mit dem Datenobject ist fehlgeschlagen

Tipp von StefanKittel vor 2 TagenTipps & Tricks

Hallo, hier einmal als Tipp für alle unter Euch die mit der Zahnarztabrechnungssoftware Charly von Solutio zu tun haben. ...

Sicherheit

Meltdown und Spectre: Wir brauchen eine "Abwrackprämie", die die CPU-Hersteller bezahlen

Information von Frank vor 2 TagenSicherheit12 Kommentare

Zum aktuellen Thema Meltdown und Spectre: Ich wünsche mir von den CPU-Herstellern wie Intel, AMD oder ARM eine Art ...

Sicherheit

Meltdown und Spectre: Realitätscheck

Information von Frank vor 2 TagenSicherheit10 Kommentare

Die unangenehme Realität Der Prozessorfehler mit seinen Varianten Meltdown und Spectre ist seit Juni 2017 bekannt. Trotzdem sind immer ...

Heiß diskutierte Inhalte
E-Mail
Erfahrungen mit hMailServer gesucht
Frage von it-fraggleE-Mail10 Kommentare

Hallo, meine neue Stelle möchte einen eigenen Mailserver. Ich als Linuxkind war direkt geistig mit Postfix dabei. Leider wollen ...

Firewall
Penetrationstester-Labor - Firewalls
Frage von Oli-nuxFirewall9 Kommentare

Mich würde interessieren warum man beim Einrichten eines Penetrationstester-Labor (VMs) die Firewall der Systeme deaktivieren soll? Hat das nur ...

Entwicklung
VBS: alle PDF-Dateien in einem Ordner gleichzeitig öffnen
gelöst Frage von JuweeeEntwicklung9 Kommentare

Hallo, ich habe in deiner Ordnerstruktur (.\Tagesberichte\xx.18\) mehrere dynamische PDF-Formulare (mit LCD erstellt). Die Berichtsformulare sind im Layout alle ...

Netzwerkgrundlagen
IPv6 Inter-VLAN Routing
gelöst Frage von clSchakNetzwerkgrundlagen7 Kommentare

Hi ich befasse mich gerade mit der Implementierung von IPv6 was bisher (in einem VLAN) korrekt funktioniert inkl. DNS ...