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 02.10.2009 um 12:11:42 Uhr
Verschoben von "Tools & Utilities" nach "Batch & Sowat".

Vermutlich ist dieser Beitrag die Mutter aller umbennen-running gag counter-Fortschreibungen.
Bei rgc=#621 hab ich aufgegeben...

Ordner umbenennen per Script

Frage Entwicklung Batch & Shell

Mitglied: bodyparts

bodyparts (Level 2) - Jetzt verbinden

20.09.2009, aktualisiert 05.10.2009, 4914 Aufrufe, 20 Kommentare

Hallo,

ich habe ca. 300 Ordner auf einer Partition X liegen. Diese Ordner liegen im Verzeichniss x:\Daten.
Die Ordner sind alle etwas umständlich benannt, um diese zu sortieren möchte ich gerne aus einer Txt Datei die in diesen 300 Ordnern liegt die Zeile in den Ordnernamen einbinden.
Irgendwie müssten das Umbennen fortgesetzt werden können wenn weitere Ordner dazu kommen.

evtl ne Idee, ich weiß wohl die Schritte aber wie man diese umsetzt nicht....

Gruß
Mitglied: bastla
20.09.2009 um 19:41 Uhr
Hallo bodyparts!

Ich fürchte, mit so detaillierten Angaben wie
... aus einer Txt Datei die in diesen 300 Ordnern liegt die Zeile in den Ordnernamen einbinden
könntest Du uns überfordert haben ...

aus einer zufällig ausgewählten Txt Datei die in diesen 300 Ordnern liegt irgendeine Zeile an beliebiger Position in den Ordnernamen einbinden ...
sollte aber zu machen sein, etwa unter Verwendung von Bausteinen wie "for /d", "set /p<TxtDatei" oder "for /f" und "findstr /n", etc

Grüße
bastla
Bitte warten ..
Mitglied: Biber
20.09.2009 um 20:04 Uhr
Moin bodyparts,
Zitat von bodyparts:
Die Ordner sind alle etwas umständlich benannt,
Irgendwie bin ich jetzt nicht wirklich überrascht davon...
Irgendwie müssten das Umbennen fortgesetzt werden können
Auch davon nicht...*seufz*...---> rgc=#616
ich weiß wohl die Schritte aber wie man diese umsetzt nicht....
Das Originalzitat ist wohl eher "Die Worte hör' ich schon, allein mir fehlt der Glaube".

Bitte, bodyparts, wenn Du doch die Schritte weisst, plaudere sie doch mal aus, menno.
Wir haben in diesem Seitenarm des Forums ein Art Kronzeugenregelung - Dir wird nichts passieren.

Verspricht
Biber
Bitte warten ..
Mitglied: bodyparts
02.10.2009 um 08:27 Uhr
moin...

ich möchte mal kurz den Stand klären...

also die Ordner liegen alle auf der Partition X in einem Hauptordner. Jeder dieser Ordner hat eine txt Datei aus der ich die erste Zeile auslesen möchte und den Ordner in dem diese liegt mit der Zeile am Anfang unbenennen möchte.

Wie man das händisch macht weiß ich, aber nicht wie ich das in ein Script binden kann.

Die TXT Datei sieht so aus Daten_info.txt, die erste Zeile kann bzw hat ein Leerzeichen also:

NAME C
.....
.....
....

usw

lg
Bitte warten ..
Mitglied: bastla
02.10.2009 um 12:01 Uhr
Hallo bodyparts!

Hatte eigentlich schon gar nicht mehr mit Dir gerechnet ...

Versuch es so:
01.
@echo off & setlocal 
02.
::Ordner immer mit abschließendem \ angeben 
03.
set "Ordner=X:\Daten\" 
04.
set "Datei=Daten_info.txt" 
05.
 
06.
for /d %%i in ("%Ordner%*.*") do call :ProcessDir "%%i" 
07.
pause 
08.
goto :eof 
09.
 
10.
:ProcessDir 
11.
set p Name=<"%~1\%Datei%" 
12.
for /f "tokens=1*" %%a in ("%Name%") do echo ren %1 "%%b" 
13.
goto :eof
Solange in der Zeile 12 das "echo" steht, wird der Befehl für das Umbenennen nur angezeigt, aber noch nicht ausgeführt.

Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
03.10.2009 um 11:21 Uhr
guten Morgen Bastla....

ich musste diese Arbeit etwas verschieben.

Ich sehe grade, das nicht alle Ordner wohl diese TXT Datei besitzen. Okay das müssen die User ändern.

Wenn im ersten Ordner keine Txt ist, dann wird gemeldet, system kann die Datei nicht finden. Im fünften Testordner war sie da.

Zweiter Test Nur ein Ordner mit der TXT Datei meldet.... drücke taste.... keine Anzeige bzw auch keine Änderung wenn ich das echo mal wegnehme...

kann man auch später noch abfangen wenn ordner schon geändert worden wird, das evtl neue dazu kommen..?

Gruß
Bitte warten ..
Mitglied: bastla
03.10.2009 um 19:53 Uhr
Hallo bodyparts!
Ich sehe grade, das nicht alle Ordner wohl diese TXT Datei besitzen.
Um diesen Fall zu berücksichtigen, kannst Du folgende Zeile 11 einfügen:
if not exist "%~1\%Datei%" goto :eof
Soferne die Datei "Daten_info.txt" nicht aus anderen Gründen (mit dem gleichen Namen) erhalten bleiben muss, könntest Du zusätzlich die bisherige Zeile 12 ändern auf
for /f "tokens=1*" %%a in ("%Name%") do echo ren %1 "%%b" && echo ren  "%~1\%Datei%" "Datei_Info_erledigt.txt"
(das zweite "echo" soll wiederum ein gefahrloses Testen erlauben) und damit die "Daten_Info.txt" umbenennen um zu kennzeichnen, dass der Ordner bereits umbenannt wurde.

Im Übrigen macht es aber auch nix, wenn ein Ordner auf den selben Namen "umbenannt" wird - daher kann der Batch für längere Zeit eingesetzt werden, um auch später hinzukommende Ordner noch zu erfassen.

Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
04.10.2009 um 11:43 Uhr
guten Morgen Bastla,

Änderungen habe ich geprüft, aber es passiert nichts.... in den Ordner x:\Daten sind ja ca. 350 Ordner die alle unterschiedlich benannt sind und in jedem dieser Ordner ist die txt Datei und weitere Daten.

Grüße

bp
Bitte warten ..
Mitglied: bastla
04.10.2009 um 12:36 Uhr
Hallo bodyparts!

Da ich mir nun gar nicht vorstellen kann, woran das liegt, noch ein Versuch: Füge die folgende Zeile unmittelbar nach der Zeile ":ProcessDir" ein:
echo %1 & dir /s /b "%~1\%Datei%"
Jetzt sollten zumindest alle Ordner bzw, wenn enthalten, auch die jeweilige "Daten_info.txt" (auch, wenn diese in einem Unterordner liegen sollte) oder eine diesbezügliche Fehlermeldung angezeigt werden - wenn nix zu sehen ist, stimmt die Ordnerangabe in Zeile 3 nicht.

Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
04.10.2009 um 15:09 Uhr
Hallo Bastla...

wenn die "pause" drin ist, zeigt er mir den Ordner an und die txt Datei incl Pfad. Drücke ich dann weiter ist sofort schluss..... kann man zur Überprfüfung sich die erste Zeile der Txt Datei anzeigen lassen, in die der Ordner ja umbenannt / ergänzt werden soll.

Gruß
Bitte warten ..
Mitglied: bastla
04.10.2009 um 15:22 Uhr
Hallo bodyparts!

Du kannst nach der Zeile
set p Name=<"%~1\%Datei%"
ein
echo %Name%
einfügen oder alternativ auch schon davor
01.
for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%~1\%Datei%"^|findstr /b "1:"') do echo %%b
verwenden.

Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
04.10.2009 um 16:17 Uhr
okay...

soll ich die "tokens" Zeile gegen die neue ersetzen?

also die Zeile aus der txt Datei wird angezeigt, aber der Ordner wird nicht umbenannt....

also Pfad ist richtig, Datei und Dateiinhalt bzw die erste Zeile wird ausgelesen.

Habe die Token Zeile auch mal ausgetauscht, keine Änderung

kl edit

die erste Zeile wird als Befehl erkannt, somit die Meldung der Befehl kann nicht ausgeführt werden....
Bitte warten ..
Mitglied: bastla
04.10.2009 um 16:36 Uhr
Hallo bodyparts!
... aber der Ordner wird nicht umbenannt....
Solange vor dem "ren" ein "echo" steht, wird auch nur der Befehl zum Umbenennen angezeigt (das sollte aber eigentlich funktionieren) ...

Poste bitte einmal den derzeitigen Stand des Batches.

Und: Enthält die erste Zeile der Textdatei Anführungszeichen, bzw was folgt genau auf "Name"?

Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
04.10.2009 um 17:25 Uhr
das mit dem echo ist mir schon klar....

hier der Stand, ich habe eine Testumgebung erstell, somit kanns nichts passieren..... leider tut es das ja auch .... ;>)

01.
********************************************************************************************** 
02.
@echo off & setlocal  
03.
 
04.
set "Ordner=X:\Daten\"  
05.
set "Datei=Daten_info.txt"  
06.
 
07.
for /d %%i in ("%Ordner%*.*") do call :ProcessDir "%%i"  
08.
pause 
09.
goto :eof  
10.
 
11.
:ProcessDir  
12.
echo %1 & dir /s /b "%~1\%Datei%" 
13.
if not exist "%~1\%Datei%" goto :eof 
14.
set p Name=<"%~1\%Datei%"  
15.
echo %Name% 
16.
 
17.
for /f "tokens=1*" %%a in ("%Name%") do ren %1 "%%b" && ren  "%~1\%Datei%" "Datei_Info_erledigt.txt" 
18.
rem for /f "tokens=1* delims=:" %%a in ('findstr /n "^" "%~1\%Datei%"^|findstr /b "1:"') do %%b 
19.
goto :eof 
20.
********************************************************************************************
die vorletzte Zeile ist mir nicht ganz klar bzw an welche Stelle so sie?

Gruß bp


[Edit Biber] Code in gleichnamige Tags gesetzt. [/Edit]
Bitte warten ..
Mitglied: bastla
04.10.2009 um 21:22 Uhr
Hallo bodyparts!

Die Zeilen 12, 15 und 18 (die vor der Zeile 13 sinnvoller wäre und in der das "echo" nach dem "do" fehlt - hier soll ja tatsächlich die erste Zeile nur angezeigt werden) sind für die Fehlersuche gedacht und sollten entsprechende Ausgaben produzieren, an denen Du Dich dann orientieren kannst - wenn Du dann noch aus dem "echo off" in Zeile 2 ein "echo on" machst, kannst Du ganz genau sehen, welche Befehle wie ausgeführt werden.

Abgesehen davon, dass meine letzte Frage oben noch nicht beantwortet ist, kann ich, solange Du nicht die entstandenen Ausgaben postest, nicht mehr tun, als deren Interpretation Dir zu überlassen ...

Grüße
bastla
Bitte warten ..
Mitglied: bastla
04.10.2009 um 21:51 Uhr
... konnte doch noch etwas tun, nämlich den schon ewig fehlenden "/" vor dem "p" nachtragen - so sollte es aber nun wirklich was werden:
01.
@echo off & setlocal 
02.
 
03.
set "Ordner=X:\Daten\" 
04.
set "Datei=Daten_info.txt" 
05.
 
06.
for /d %%i in ("%Ordner%*.*") do call :ProcessDir "%%i" 
07.
goto :eof 
08.
 
09.
:ProcessDir 
10.
if not exist "%~1\%Datei%" goto :eof 
11.
set /p Name=<"%~1\%Datei%" 
12.
for /f "tokens=1*" %%a in ("%Name%") do ren %1 "%%~b" && ren  "%~1\%Datei%" "Datei_Info_erledigt.txt" 
13.
goto :eof
Sorry, dass mir das erst jetzt aufgefallen ist ...

Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
05.10.2009 um 15:38 Uhr
Hallo bastla....

sieht schon viel besser aus... aber, diese aber....

der Ordner wird komplett umbenannt, nicht "ersätzt.... die TXT Zeile sollte ja den Ordner umbennen, aber nicht komplett sondern ergänzen am Anfang.

Also wenn die Zeile "abcd 1" heißt und der Ordner z.b. "qwertz" dann sollte "abcd 1 qwertz" umbenannt werden.... wäre das machbar? Evtl ein Trennstrich, aber nur evtl....

Gruß
Bitte warten ..
Mitglied: bastla
05.10.2009 um 15:48 Uhr
Hallo bodyparts!
wäre das machbar?
Wenn's denn damit feststeht, was tatsächlich geschehen soll ...

Ändere Zeile 12 auf
01.
for /f "tokens=1*" %%a in ("%Name%") do ren %1 "%%~b %~nx1" && ren  "%~dp1%%~b %~nx1\%Datei%" "Datei_Info_erledigt.txt"
Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
05.10.2009 um 16:27 Uhr
Hallo bastla,

dachte ich hätte das gesagt...

der Ordner wird umbenannt, aber nur der letzte Buchstabe der Zeile wird "eingefügt"...

also aus "File5 C" ( erste Zeile) wird "Ordnername C" und nicht "Ordnername File C"

....

Gruß bp
Bitte warten ..
Mitglied: bastla
05.10.2009 um 19:10 Uhr
Hallo bodyparts!

Abgesehen davon, dass
aus "File5 C" ( erste Zeile) wird "Ordnername C" und nicht "Ordnername File C"
wenn überhaupt nur heißen könnte:
aus "File5 C" ( erste Zeile) wird "C Ordnername" und nicht "File5 C Ordnername"
fehlt mir immer noch die Information, was denn nun die erste Zeile genau enthält ...

Bisher war ich davon ausgegangen, dass diese mit dem Wort "NAME" beginnt und dahinter erst der gewünschte Name angeführt ist - deshalb wird auch alles vor dem ersten Leerzeichen weg gelassen. Wenn nun tatsächlich die gesamte erste Zeile vor dem bisherigen Ordnernamen eingefügt werden soll, dann eben als Zeile 12:
ren %1 "%Name% %~nx1" && ren  "%~dp1%Name% %~nx1\%Datei%" "Datei_Info_erledigt.txt"
Grüße
bastla
Bitte warten ..
Mitglied: bodyparts
05.10.2009 um 19:31 Uhr
sorry, war mir nicht klar, dass du es so verstanden hast.

Also die erste Zeile kann einen Namen enthalten...

THOMAS A oder Martin Z oder auch Sonja R, also immer die komplette Zeile auslesen und umbennen...

aber erstmal vielen Dank für die Mühe...

gruß bp
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Ähnliche Inhalte
VB for Applications
gelöst VB Script rekursiv statt nur ein Ordner (4)

Frage von Saschaaaaa zum Thema VB for Applications ...

Windows 8
gelöst Benutzer kann plötzlich keine Ordner mehr umbenennen (3)

Frage von IllusionFACTORY zum Thema Windows 8 ...

Batch & Shell
gelöst Per Script Ordner überwachen und Prog. ausfühern (9)

Frage von Knuefi zum Thema Batch & Shell ...

VB for Applications
VBS Script zum versenden mehrerer Verknüpfungen zu Dateien per Lotus Notes

Frage von Sentinel87 zum Thema VB for Applications ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...