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
GELÖST

Dateinamen ergänze, Pfad verkürzen

Frage Entwicklung Batch & Shell

Mitglied: dctibi

dctibi (Level 1) - Jetzt verbinden

02.10.2010 um 18:58 Uhr, 6308 Aufrufe, 4 Kommentare

Hallo, bräuchte unter DOS ein Skript (unter Unix wäre es ja keine Kunst), das bei uns den Verzeichnisbaum aufräumt:

Weit verschachtelter Verzeichnisbaum.
Da und dort sind Dateinamen, deren Name unter 4 Zeichen lang ist.
Das muss nicht sein und sollte behoben werden. Nur wie?
<p>
z.B. d:\daten\bla\bla2\bla3\fotos\sommer2008\10.jpg
sollte werden zu d:\daten\bla\bla2\bla3\fotos\sommer2008_10.jpg
<p>
(Und danach kann sommer2008 als Ordner aufgelöst werden)
<p>
Frage: Wie geht das unter MS-DOS/Windows?!?!?!
Mitglied: bastla
02.10.2010 um 20:17 Uhr
Hallo dctibi und willkommen im Forum!

Grundsätzlich ließe sich Teil 1 (das Ergänzen des Dateinamens) schematisch etwa so umsetzen:
01.
@echo off & setlocal 
02.
set "Basis=D:\Test" 
03.
 
04.
for /f %%i in ('dir /s /b /a-d "%Basis%"') do set "Name=%%~ni" & call :ProcessFile "%%~fi" 
05.
goto :eof 
06.
 
07.
:ProcessFile 
08.
if "%Name:~3%" neq "" goto :eof 
09.
for %%a in ("%~1\..") do set "Parent=%%~nxa" 
10.
echo move %1 "..\%Parent%_%~nx1" 
11.
goto :eof
Das "echo" vor dem "move" sorgt dafür, dass das Umbenennen und Verschieben zunächst nur (durch die Ausgabe des entsprechenden Befehles) simuliert wird. Nicht berücksichtigt (auch in Deiner Beschreibung) ist vorläufig die Möglichkeit, dass es eine Kollision der umbenannten Datei mit einer im darüber liegenden Ordner bereits vorhandenen gleichnamigen Datei geben könnte ("move" würde in diesem Fall ohne Rückfrage überschreiben) ...

Teil 2 (Auflösen des Ordners) könnte aber eigentlich nur (und auch dann sinnvoller Weise erst im Nachhinein) für gänzlich leere (zumindest hinsichtlich darin bzw in Unterordnern enthaltener Dateien) Ordner durchgeführt werden - also etwa:
01.
@echo off & setlocal 
02.
set "Basis=D:\Test" 
03.
 
04.
for /r "%Basis%" %%i in (.) do ( 
05.
    set "Leer=True" 
06.
    for /f %%a in ('dir /s /b /a-d "%%i" 2^>nul') do set "Leer=" 
07.
    if defined Leer echo rd /s /q "%%i" 
08.
)
Auch hier dient das "echo" in Zeile 7 dem gefahrlosen Testen ...

Grüße
bastla
Bitte warten ..
Mitglied: dctibi
04.10.2010 um 15:27 Uhr
Hallo Bastla!

Ist ja genial gebastelt! wow!

Jedoch habe ich Probleme mit dem move...
Dein Skript startet in %Basis%
Holt dann eine Datei %1 und schiebt sie in Zeile 10 vom AKTUELLEN Pfad (also meinem Working-Directory) nach .. und dort mit dem von mir so gewünschten Dateinamen.
Das .. sollte sich jedoch nicht auf den aktuellen Pfad, sondern auf den Pfad zu %1 beziehen.

Dass bestehende Dateien nicht überschrieben werden, sollte man mit echo n|move lösen können, oder?

Beim zweiten Teil überprüft er wohl nur, ob keine Dateien drinnen sind - aber nicht, ob es Unterordner gibt - sehe ich das richtig?

Aber Danke für diese ersten, genialen, weil doch so kurz und einfach ausschauend (hätte es trotzdem nicht geschafft *g*) Antworten!
Bitte warten ..
Mitglied: bastla
04.10.2010 um 16:09 Uhr
Hallo dctibi!
Das .. sollte sich jedoch nicht auf den aktuellen Pfad, sondern auf den Pfad zu %1 beziehen.
Stimmt (in der Zeile davor hatte ich's auch noch dabei), daher:
echo move %1 "%~1\..\%Parent%_%~nx1"
Dass bestehende Dateien nicht überschrieben werden, sollte man mit echo n|move lösen können, oder?
Nein - in einem Batch überschreibt "move" ohne Rückfrage, daher hilft nur nur ein "if exist" vorweg:
01.
if not exist "%~1\..\%Parent%_%~nx1" ( 
02.
    echo move %1 "%~1\..\%Parent%_%~nx1" 
03.
) else ( 
04.
    echo %1 konnte nicht verschoben werden! 
05.
)
Beim zweiten Teil überprüft er wohl nur, ob keine Dateien drinnen sind - aber nicht, ob es Unterordner gibt - sehe ich das richtig?
Jein - auch Unterordner werden auf enthaltene Dateien überprüft, sodass also nur gelöscht wird, wenn nur noch Unterordner vorhanden sind (oder eben der Ordner ganz leer ist).

Grüße
bastla
Bitte warten ..
Mitglied: dctibi
06.10.2010 um 13:43 Uhr
Hallo Bastla,

habe bei mir dann Punkt 1 ausgebessert;
und Punkt 2 habe ich getestet... JAAA, es funktioniert! Super! Danke!
Bitte warten ..
Ähnliche Inhalte
Batch & Shell
Ergänzen einer CSV Datei als letze Spalte mit Teil der Dateiname
Frage von moltitiBatch & Shell11 Kommentare

ich habe ca. 12000 Dateien die im Batch Betrieb ergänzt werden sollen. Der Aufbau der Dateien ist etwa so: ...

Microsoft Office
Publisher 2010: Einfügen von Dateiname und Pfad
gelöst Frage von hushpuppiesMicrosoft Office2 Kommentare

Hallo zusammen! Ich würde gerne in einem Publisher 2010 Dokument in die Fußzeile Dateiname und Pfad einfügen und automatisch ...

Basic
Commondialog.filename liefert pfad-ziel einer verknpüfung anstatt den pfad-dateiname der verknüpfung selbst?
gelöst Frage von AlbertMinrichBasic2 Kommentare

Hallo, Visual Basic 6 Mit folgendem Code öffne ich einen Speichern-Dialog. Gehe ich jetzt im Speichern-Dialog-Fenster z.B. in das ...

Batch & Shell
Powershell - Pfade und Dateien vergleichen nicht möglich da Pfad oder Dateiname zu lang
gelöst Frage von oliver12Batch & Shell9 Kommentare

Moin, ich bin dabei einen File-Server zu replizieren bzw. auf einen neuen zu wechseln. Um zu überprüfen ob beide ...

Neue Wissensbeiträge
Mac OS X

MacOS wo ist die Tilde ?

Tipp von Alchimedes vor 6 MinutenMac OS X

Hallo, ich hab eine MacOS qwertz Keyboard auf US Layout umgestellt da die Sonderzeichen besser ereichbar sind. Leider fehlt ...

Datenschutz

Weitere Inforamtionen zum Sicherheitsproblem BeA

Information von Penny.Cilin vor 7 StundenDatenschutz

Im folgenden ein weiterer Bericht über die Sicherheitsprobleme von Bea. Fataler Konstruktionsfehler im besonderen elektronischen Anwaltspostfach Gruss Penny

Windows 10

Systemdienste behalten nach Win10 inplace-Upgrade nicht die ggf. modifizierte Startart bei

Tipp von DerWoWusste vor 8 StundenWindows 103 Kommentare

Stellt Euch vor, Ihr habt ein Win10 System und modifiziert dort die Startart von Systemdiensten. Zum Beispiel wollt Ihr ...

Microsoft Office

Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei

Anleitung von SarekHL vor 11 StundenMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...

Heiß diskutierte Inhalte
Netzwerke
NTFS-Berechtigung
Frage von Daoudi1973Netzwerke23 Kommentare

Hallo zusammen und frohes neues Jahr (Sorry, ich bin spät dran) Meine Frage: 1- Ich habe einen Ordner im ...

Batch & Shell
AD-Abfrage in Batchdatei und Ergebnis als Variable verarbeiten
gelöst Frage von Winfried-HHBatch & Shell19 Kommentare

Hallo in die Runde! Ich habe eine Ergänzungsfrage zu einem alten Thread von mir. Ausgangslage ist die Batchdatei, die ...

Windows 10
Netbook erkennt Soundkarte nicht - keinerlei Info zum Hersteller und Modell vom Netbook und Hardware bekannt
Frage von fyrb38Windows 1017 Kommentare

Guten Tag, meine Schwester reist in einigen Wochen für ein paar Monate ins Ausland und hat sich dafür ein ...

Microsoft Office
Deaktivieren von Startbildschirm und Backstage-Ansicht in Office 2016 per Batch-Datei
Anleitung von SarekHLMicrosoft Office17 Kommentare

Guten Morgen zusammen! Ich habe mir gestern (auch mit Hilfe dieses Boards) ein Script gebastelt, um in Office 2016 ...