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
Kommentar vom Moderator Biber am 27.10.2009 um 21:31:51 Uhr
Verschoben von "Netzwerküberwachung und Protokolle" nach "Batch & Shell".
(da wird es vielleicht vom nächsten Suchenden besser gefunden)
GELÖST

Sonderzeichen aus Datei- u. Ordnernamen entfernen bzw. ersetzen per bat o. vbs

Frage Entwicklung Batch & Shell

Mitglied: HGGIGO

HGGIGO (Level 1) - Jetzt verbinden

27.10.2009, aktualisiert 18.10.2012, 9257 Aufrufe, 3 Kommentare

Schön guten Tag,

zur zeit Arbeiten wir auf unserem Eigenen Server, dieser wird aber von einem Fremdunternehmen, welches uns bald im Zielbetrieb übernimmt vereinnahmt und auf deren Server kopiert.

Jetzt das Problem: Auf dem neuen Server können nur Daten gespeichert werden die keine Sonderzeichen oder Leerzeichen enthalten. Alles was nicht bis zur Übernahme umbenannt ist verschwindet einfach...

Ich muss also die über 4 Mio. Dateien und Ordner umbenennen, bin aber nicht sehr begabt mit VBScript bzw. mit Batch! Es können auch keine Tool genutzt werden, da wir schon zum Teil übernommen sind ist mir dies nicht mehr Möglich... Müsste Quasi auch das Script per Hand abschreiben um es ins System zu bekommen.
Mitglied: TsukiSan
27.10.2009 um 16:50 Uhr
dir könnte dieses Replace-Script helfen
01.
on error resume next 
02.
 
03.
Dim FilterStr , PfadStr 
04.
Dim PfadStrNeu, DateiNameNeu 
05.
Dim Alt, Neu 
06.
Dim MyText() 
07.
Dim  X , ZX 
08.
Dim ZMAx 
09.
 
10.
FilterStr = "*.*" 
11.
X = 0 
12.
ZMax = 0 
13.
LogPath = "D:\Replace.txt" 
14.
FN = "" 
15.
FNR = "" 
16.
vbTextCompare = 1 
17.
 
18.
 
19.
Set objWord = CreateObject("Word.Application") 
20.
Set FSO = CreateObject("Scripting.FileSystemObject") 
21.
 
22.
Set MyLogFile = FSO.CreateTextFile(LogPath, TRUE) 
23.
MyLogFile.Close 
24.
 
25.
 
26.
 
27.
PfadStr = inputbox("Bitte den kompletten Pfad zu dem zu durchsuchenden Ordner eingeben.","Pfadangabe...","D:\1\") 
28.
PfadStrNeu = PfadStr & "ReplacedFiles\" 
29.
 
30.
FSO.CreateFolder(PfadStrNeu) 
31.
 
32.
Alt = inputbox("Bitte die zu ersetzende Zeichenkette eingeben...", "Alte Zeichenkette...", "ä")  
33.
Neu = inputbox("Bitte die neue Zeichenkette eingeben...", "Neue Zeichenkette...", "ae")  
34.
 
35.
msgbox "Befehl wird ausgeführt! Bitte warten!",,"Mit Word...." 
36.
 
37.
objWord.FileSearch.FileName = FilterStr 
38.
objWord.FileSearch.LookIn = PfadStr 
39.
objWord.FileSearch.SearchSubfolders = False 
40.
objWord.FileSearch.Execute 
41.
 
42.
 
43.
objWord.Visible = False 
44.
 
45.
Set MyLogFile = FSO.OpenTextFile(LogPath, 8) 
46.
MyLogFile.WriteLine (Time & "|Beginne Script: 'Replace_Strings_in_gesamten_Ordner.vbs'") 
47.
 
48.
For Each objFile in objWord.FileSearch.FoundFiles	 
49.
	 
50.
	MyLogFile.WriteLine (Time & "|  Oeffne Datei: " & ObjFile) 
51.
 
52.
'Jetzt holen wir uns nur den Dateinamen raus	 
53.
	FN = "" 
54.
	FNR = "" 
55.
	IFN = "" 
56.
	IFNR = "" 
57.
	for IFN = len(Objfile) to 0 Step -1 
58.
		FNTemp = mid (Objfile,IFN,1) 
59.
			If Not FNTemp = "\" then FN = FN & FNTemp 
60.
			If FNTemp = "\" Then IFN = 0 
61.
	next 
62.
 
63.
'Hier wieder richtig rum drehen ;-) 
64.
	for IFNR = len(FN) to 1 Step -1 
65.
		FNTempR = mid (FN,IFNR,1) 
66.
			FNR = FNR & FNTempR 
67.
	next 
68.
 
69.
	ZMAx = 0 
70.
	Set MyDatei = FSO.OpenTextFile(objFile, 1) 
71.
	Do Until MyDatei.AtEndOfStream  
72.
		TempText = MyDatei.ReadLine 
73.
		ZMAx = Zmax + 1  
74.
	Loop 
75.
	MyDatei.close	 
76.
	 
77.
	ReDim MyText(ZMax) 
78.
 
79.
	Set MyDatei = FSO.OpenTextFile(objFile, 1) 
80.
	Do Until MyDatei.AtEndOfStream  
81.
 
82.
		MyText(X) = MyDatei.ReadLine 
83.
	 
84.
		Tsuki = InStr(1,MyText(X), ALT, vbTextCompare) 
85.
	 
86.
		ZX = X 
87.
			If ZX < 10  then ZX = "0" & ZX 
88.
			If ZX < 100 then ZX = "0" & ZX 
89.
 
90.
		IF Tsuki > 0 Then 
91.
			MyLogFile.WriteLine (Time & "|     Zeile " & ZX & ": [" & ALT & "] ersetzt durch [" & Neu & "]") 
92.
		End If 
93.
		 
94.
		MyText(X) = Replace(MyText(X), Alt, Neu)  
95.
 
96.
		X = X + 1   
97.
 
98.
	Loop 
99.
	MyDatei.close 
100.
	 
101.
 
102.
	PfadNeu = PfadStrNeu & FNR  
103.
 
104.
	MyLogFile.WriteLine (Time & "|Schreibe Datei: " & PfadNeu) 
105.
 
106.
	Set MyDatei1 = FSO.CreateTextFile(PfadNeu, TRUE) 
107.
	MyDatei1.Close 
108.
	 
109.
	Set MyDatei1 = FSO.OpenTextFile(PfadNeu, 8) 
110.
	for I = 0 to (X - 1) 
111.
		MyDatei1.WriteLine (MyText(I)) 
112.
	next 
113.
	MyDatei1.Close 
114.
	 
115.
	X = 0 
116.
Next 
117.
 
118.
MyLogFile.WriteLine (Time & "| Beende Script: 'Replace_Strings_in_gesamten_Ordner.vbs'") 
119.
MyLogFile.Close 
120.
 
121.
WScript.Echo Time & "| Script beendet." 
122.
 
123.
objword.quit 
124.
 
125.
Set objword = nothing 
126.
Set MyDatei = nothing 
127.
Set FSO = nothing
Gruß
Tsuki
Bitte warten ..
Mitglied: Biber
27.10.2009, aktualisiert 18.10.2012
Moin HGGIGO,

willkommen im Forum.
. Müsste Quasi auch das Script per Hand abschreiben um es ins System zu bekommen.
Tja, rein vom Naturell her würde ich diesen Oneliner eigentlich direkt am CMD-Prompt eintippen...

Okay, du solltest vorher das CMD-Fenster mit "mode con cols=166 lines=44" ein bisschen anpassen.

Zum Umbenennen der Dateien würde dieser (als Batch formatierte) Oneliner reichen:
01.
:: ----snipp UmlautRen.bat --- 
02.
:: setlocal enableDelayedexpansion && REM falls bei euch nicht gesetzt 
03.
 
04.
@echo off & FOR %%a in ("ä=ae" "ö=oe" "ü=ue" "ß=ss" " =") do ( 
05.
    FOR /f "tokens=1,2 delims==" %%y in ("%%~a") do ( 
06.
        FOR /R d:\temp %%i in ("*%%y*") do @( 
07.
        Set "fileUml=%%~nxi"  
08.
        ECHO ren "%%i" "!fileUml:%%~a!" 
09.
    )))
Da der in der vorletzten virtuellen Zeile noch ein "ECHO ren" statt "ren" stehen hat, spielt der nur...

Demo:
(=19:01:34  D:\temp=) 
>e:\schnipsel\UmlautRen.bat 
ren "d:\temp\Bi-Bär 2009-123456.pdf" "Bi-Baer 2009-123456.pdf" 
ren "d:\temp\präfix.bla" "praefix.bla" 
ren "d:\temp\Backup1\Admincopy\SendTo\E-Mail-Empfänger.MAPIMail" "E-Mail-Empfaenger.MAPIMail" 
ren "d:\temp\Backup1\Admincopy\Startmenü\Programme\Zubehör\Programmkompatibilitäts-Assistent.lnk" "Programmkompatibilitaets-Assistent.lnk" 
ren "d:\temp\Backup1\tsprofil\SendTo\E-Mail-Empfänger.MAPIMail" "E-Mail-Empfaenger.MAPIMail" 
ren "d:\temp\Hein Blöd 2009-123456.pdf" "Hein Bloed 2009-123456.pdf" 
ren "d:\temp\testö mit Leerzeichen.xyz" "testoe mit Leerzeichen.xyz" 
ren "d:\temp\ÖÖÖö.txt" "oeoeoeoe.txt" 
ren "d:\temp\ÖÖÖÖÖ.txt" "oeoeoeoeoe.txt" 
ren "d:\temp\Backup1\Admincopy\SendTo\Desktop (Verknüpfung erstellen).DeskLink" "Desktop (Verknuepfung erstellen).DeskLink" 
ren "d:\temp\Backup1\Admincopy\Startmenü\Programme\Remoteunterstützung.lnk" "Remoteunterstuetzung.lnk" 
ren "d:\temp\Backup1\tsprofil\SendTo\Desktop (Verknüpfung erstellen).DeskLink" "Desktop (Verknuepfung erstellen).DeskLink" 
ren "d:\temp\testö mit Leerzeichen.xyz" "testömitLeerzeichen.xyz" 
....
Diese Skizze hat EINEN großen Vorteil gegenüber TsukiSans Ansatz:
  • es werden nur die betroffenen Dateien (mit den definierten Sonderzeichen) angefasst - und nicht alle Dateien. ist etwas schneller.

und einen halben Vorteil hat es zusätzlich: Wenn du erst einmal mit "Echo ren.." statt "Ren" laufen lässt, dann hat du gleich eine Doku.

Nachteile:
  • es wird (und kann nicht werden!) NICHT unterschieden zwischen Gross- und Kleinschreibung. Aus " Änderungsprotokoll" wird "aenderungsprotokoll" statt "Aenderungsprotokoll.
  • es lässt sich vieles auch wieder zurückdrehen (aus ue wieder ü machen etc). Allerdings wird beim Zurückdrehen aus "Michael" ein "Michäl", aus Oldesloe wird Oldeslö.
Und die Leerzeichen lassen sich gar nicht wieder sinnvoll einstreuen.

Für <b>Ordner<b>- statt Dateinamen müsste eine leicht modifizierte Kopie der ersten Anweisung machbar sein.

Grüße
Biber

P.S. Übrigens gibt es unter Ersetzen von Zeichen in Datei- und Verzeichnisnamen in allen Unterordnern eine auch sehr nette Lösung von pieh-ejdsch.

P.p.S. Falls jemand drüber stolpert, das [ren "d:\temp\testö mit Leerzeichen.xyz" "testömitLeerzeichen.xyz"] diese Zeile zweimal gefunden wird:
Es hat ja kein REName stattgefunden.... war ja nur Simulation mit ECHO...
Bitte warten ..
Mitglied: HGGIGO
27.10.2009 um 21:20 Uhr
WOW! Dankeschön


Hab Sie alle probiert und muss sagen die von gefällt mir am besten... (Sry das ich diesen nicht gefunden hab)
Die anderen haben in meinem Test Verzeichnis nicht so richtig funktioniert!

Ich Danke euch das war super...

Tschü
Bitte warten ..
Neuester Wissensbeitrag
Windows 10

Powershell 5 BSOD

(8)

Tipp von agowa338 zum Thema Windows 10 ...

Ähnliche Inhalte
Batch & Shell
Mehrere.csv Dateien zusammenfügen zu einer Datei mit bat (4)

Frage von Piotrney zum Thema Batch & Shell ...

Windows Server
gelöst Sichtbares Ausführen einer BAT-Datei mittels GPOs (10)

Frage von DasWombat1993 zum Thema Windows Server ...

Heiß diskutierte Inhalte
Microsoft
Ordner mit LW-Buchstaben versehen und benennen (21)

Frage von Xaero1982 zum Thema Microsoft ...

Netzwerkmanagement
gelöst Anregungen, kleiner Betrieb, IT-Umgebung (18)

Frage von Unwichtig zum Thema Netzwerkmanagement ...

Windows Update
Treiberinstallation durch Windows Update läßt sich nicht verhindern (17)

Frage von liquidbase zum Thema Windows Update ...

Windows Tools
gelöst Aussendienst Datensynchronisierung (12)

Frage von lighningcrow zum Thema Windows Tools ...