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

Batch-Problem - Dateiname zu lang zum Verschieben

Frage Entwicklung Batch & Shell

Mitglied: Ela1076

Ela1076 (Level 1) - Jetzt verbinden

19.01.2009, aktualisiert 18:08 Uhr, 5817 Aufrufe, 11 Kommentare

Hallo,

ich habe folgendes Problem:

In einem Ordner der Form S:\Misc\Statistik-Archiv\000 Testdateien kommen regelmäßig Dateien an, die dann in einen entsprechenden Unterordner verschoben werden sollen.

Der Unterordner ist S:\Misc\Statistik-Archiv\000 Testdateien\123456789 File - ABCglobal Land abcdefghijklmno & abcdefghijklmn Inhalt ...so ungefähr :o) auf jeden Fall mit dieser Länge.

Die Dateien haben die Form
ABCglobal_Land_abcdefghijklmno_abcdefghijklmn_Inhalt/_123456789_File_20090118_180536, wobei das Rote am Schluss ein Zeitstempel ist, der von Datei zu Datei verschieden ist.

Bei anderen Dateien mit kürzerem Namen bzw. Unterordner, in den sie rein sollen, geht das Verschieben mit einem Batch-File problemlos. Bei längeren kommt aber die Fehlermeldung "The filename or extension is too long". Ich habe überlegt, dass man vielleicht in einer FOR-Schleife den Dateinamen erstmal in einen kürzeren umbenennen könnte, diese umbenannte Datei in den Unterordner verschieben und dort die Datei wieder in die ursprüngliche Bezeichnung zurückbenennen. Das krieg ich aber irgendwie nicht hin :o(

Kann mir vielleicht jemand von Euch helfen? Bin noch nicht so .bat-erprobt.
Ach ja, um eventuellen Fragen gleich zuvorzukommen:
Die Datei- und Ordnernamen können nicht geändert werden, und es muss auf jeden Fall ein .bat-File sein.

Ich hoffe, ich habe das Problem einigermaßen verständlich beschrieben...
Bin für jeden Hinweis dankbar!
Mitglied: bastla
19.01.2009 um 18:27 Uhr
Hallo Ela1076 und willkommen im Forum!

Ein probates Mittel in solchen Fällen ist ein
subst X: "S:\Misc\Statistik-Archiv\000 Testdateien"
Da Du in weiterer Folge für diesen Ordner nur noch "X:\" schreiben musst, hast Du schon einiges an Pfadlänge eingespart. Am Ende des Batches kann dann der Laufwerksbuchstabe mit
subst X: /d
wieder frei gegeben werden.
Trotzdem Du schon angemerkt hast, dass eine Änderung der Pfade / Dateinamen nicht möglich wäre, stellt sich mir trotzdem die Frage nach der Sinnhaftigkeit des Ganzen - wie sollen denn diese Dateien dann in weiterer Folge verwendet werden?

Grüße
bastla
Bitte warten ..
Mitglied: Ela1076
20.01.2009 um 13:02 Uhr
Vielen Dank schon mal für Deine Hilfe, bastla! Leider funktioniert es trotzdem noch nicht. Ich habe Folgendes eingegeben:

subst X: "S:\Misc\Statistik-Archiv\000 Testdateien" 
For /F "Tokens=*" %%i IN ('Dir /B "X:\ABCglobal_Land_abcdefghijklmno_abcdefghijklmn_Inhalt/_123456789_File_*.xls"') DO ( 
Move /Y "%%~i" "X:\123456789 File - ABCglobal Land abcdefghijklmno & abcdefghijklmn Inhalt" 
subst X: /d 
pause)
-> Ergebnis: The filename or extension is too long. :o(
----

Wie gesagt, für mich sind batch-Files noch "Neuland", da ich mich erst seit ein paar Tagen damit beschäftige. Über Google und das "Hilfe und Support"-Menü habe ich nichts Brauchbares für dieses Problem finden können. Vielleicht ist auch die FOR-Schleife fehlerhaft... obwohl ich glaube, dass es nicht daran liegt.

Scheint so, als wäre das Problem tatsächlich der Dateiname, unabhängig von den Pfadangaben, die davor stehen. Kann man den vielleicht irgendwie kürzen, um ihn zu verschieben (und danach wieder in den ursprünglichen Zustand zurücksetzen)?

Zu Deiner Frage nach der Verwendung der Dateien: Die kommen grundsätzlich täglich von "außerhalb" (deswegen kann der Name auch nicht geändert bzw. gekürzt werden) und müssen von mir in den jeweiligen Ordnern archiviert werden, um später bei Bedarf darauf zurückgreifen zu können. Diese Unterordner werden von sehr vielen Leuten verwendet, weshalb sie ebenfalls nicht umbenannt werden sollten.

Viele Grüße,
Ela
Bitte warten ..
Mitglied: Ela1076
20.01.2009 um 15:10 Uhr
Nachtrag:

Ich denke, mir wäre schon ein Stück weit geholfen, wenn ich die Dateien ABCglobal_Land_abcdefghijklmno_abcdefghijklmn_Inhalt/_123456789_File_20090118_180536 (vorübergehend, bis sie verschoben sind)
in
XY_20090118_180536
umbenennen könnte.

Allerdings machen die Unterstriche da Probleme, denn mit
rename "S:\Misc\Statistik-Archiv\000 Testdateien\ABCglobal_Land_abcdefghijklmno_abcdefghijklmn_Inhalt/_123456789_File_*.xls" "XY_*.xls"
wird nicht alles vor dem * ersetzt, sondern nur der Abschnitt bis zum ersten Unterstrich,
also im Ergebnis dann XY_Land_abcdefghijklmno_abcdefghijklmn_Inhalt/_123456789_File_*.xls

Hat hier vielleicht jemand eine Idee?

Ela
Bitte warten ..
Mitglied: Biber
20.01.2009 um 22:26 Uhr
Moin Ela1076,

willkommen im Forum.
Hat hier vielleicht jemand eine Idee?
Jepp... das ist eines der Markenzeichen dieses Forums.

idee: Strategiewechsel.
Ein REName-Befehl mit Wildcardzeichen geht fast immer in die Grütze, weil der CMD-Interpreter ihn etwas anders umsetzt als Du ihn meinst.

Suche konkreter nach den umzubenennenden Dateinamen und
behandle sie einzeln mit "REN eineDatei_Datum_Uhrzeit.xls XY_Datum_Uhrzeit.xls"
Und diese Wildcard "*_Datum_Uhrzeit." kannst Du formulieren als "_*_2009????_??????.xls'
Wenn Du also alle Dateien
  • ab Unterverzeichnis "S:\Misc\Statistik-Archiv\000 Testdateien" und darunter
  • mit der Namenskonvention "_"+beliebigesGesülze+"2009mmtt_hhmmss.xls"
umbenennen willst
Dann nimm folgenden Oneliner, den ich aus optischen Gründen als Batchdatei formatiert habe
01.
:: ---RenLongDatumUhrzeit.bat --- 
02.
Set "Startdir=S:\Misc\Statistik-Archiv\000 Testdateien" 
03.
@for /f "delims=" %%j in ('dir /b /s "%startdir%\*_2009????_??????.xls"') do @( 
04.
  for /f "delims=_ tokens=1-9" %%a in ("%%~nxj") do @( 
05.
   for /f "tokens=1,2" %%x in ("%%i %%h %%g %%f %%e %%d %%c %%b %%a")  do @( 
06.
         @ECHO ren "%%j" XY_%%y_%%x 
07.
)))
Das letzte GROSS geschrieben ECHO dient nur zum Testen.
Wenn bei Dir nun erwartungsgemäß u.a. herauskommt:
01.
.... 
02.
ren "S:\Misc\Statistik-Archiv\000 Testdateien\ABCglobal_Land_abcdefghijklmno_abcdefghijklmn_Inhalt\_123456789_File_20090118_180536.xls" XY_20090118_180536.xls 
03.
....
--->dann kannst Du das ECHO weglassen und den Schnipsel abfeuern.

Grüße
Biber
Bitte warten ..
Mitglied: Ela1076
22.01.2009 um 11:28 Uhr
Hallo Biber,

die Idee mit der Umbenennung ohne Wildcard-Zeichen (bzw. anders als vorhin) klingt wirklich sehr gut, danke schon mal für die Batch-Datei!
Nur leider... leider funktioniert das bei mir auch nicht. Wenn ich das batch-file ausführe, erscheint nur für eine Sekunde das "schwarze Fenster" (auch wenn ich 'pause' noch mit einbaue), und im Endeffekt tut sich gar nichts. Also die Dateinamen haben sich nach der Ausführung des Batch-Programms nicht verändert.

Dass das Fenster (trotz 'pause') nur ganz kurz erscheint und sonst nichts passiert, kam schon öfter mal vor - woran liegt denn das?

Grüße,
Ela
Bitte warten ..
Mitglied: Biber
22.01.2009 um 21:22 Uhr
Moin Ela1076,

bitte als erstes: wechsele zum CMD-Prompt.
Per Starten über einen Explorer-Doppelklick kannst Du nicht sinnvoll testen.

Also bitte "Start"->"Ausführen"->cmd
Und dann eingeben:
01.
Prompt $p$_$g 
02.
Mode con cols=166 lines=55
...damit du überhaupt irgendetwas siehst.

Danach dann
D:\schnipsel\RenLongDatumUhrzeit.bat
{ oder wo immer und unter welchem Namen Deine *.bat liegt}

und sollte DANN nix zu lesen sein, dann das "@echo off" in ein "@echo on" ändern.

Danach sehen wir weiter.

Grüße
Biber
Bitte warten ..
Mitglied: Ela1076
27.01.2009 um 14:12 Uhr
Hallo,

so, jetzt hab ich Deinen Vorschlag mal ausprobiert, aber irgendwie klappt's nicht bzw. ich steh auf der Leitung...
Also bei mir scheitert's schon am Ausführen der Datei. Ich muss dazu aber sagen, dass ich mit CMD-Prompt noch weniger Ahnung habe als mit batch-Dateien.

Ich habe zum CMD-Prompt gewechselt, dann die Größe angepasst, wie vorgeschlagen. (hat alles noch wunderbar funktioniert ;o)

Der Pfad der .bat-Datei ist S:\Misc\Statistik-Archiv\000 Testdateien\test.bat
Ich habe Folgendes eingegeben:

S:
cd S:\Misc\Statistik-Archiv\000 Testdateien
call test.bat (so hab ich die .bat-Datei genannt)

dann kam "Datei nicht gefunden".

Hm...?!

Ist bestimmt ein ganz dummer Fehler, nur ich komm (auch mit Google-Hilfe) grad nicht drauf.

Gruß,
Ela
Bitte warten ..
Mitglied: Biber
27.01.2009 um 18:37 Uhr
Moin Ela1076,

bei Pfaden und Dateien mit Leerzeichen im Namen musst Du diese in Anführungszeichen setzen.
So wie ich es hier in dem Batchschnipsel getan habe:
Set "Startdir=S:\Misc\Statistik-Archiv\000 Testdateien"
Also bitte nach dem "Start"->"Ausführen"->cmd Zeile für Zeile einzeln eingeben und ENTER drücken
S: 
cd "S:\Misc\Statistik-Archiv\000 Testdateien" 
--- falls die Datei "test.bat" dort gespeichert ist -- 
test.bat 
---- alternativ, falls die Datei test.bat auf "x:\xz\bla" liegt 
---  x:\xz\bla.test
Grüße
Biber
Bitte warten ..
Mitglied: Ela1076
29.01.2009 um 11:31 Uhr
Hi Biber,

also es ist echt wie verhext... bei mir klappt das einfach nicht mit dem Ausführen der Datei. Ich habe im CMD-Prompt auf das Laufwerk S gewechselt, dann mit cd "S:\Misc..." auf den Pfad gewechselt. (alle Eingabe natürlich auch mit Enter) Das hat alles noch wunderbar funktioniert. Angezeigt wurde dann

01.
S:\Misc\Statistik-Archiv\000 Testdateien
Soweit noch alles ok...
Ich habe dann den Namen der .bat-Datei eingegeben:

01.
>test.bat (ENTER)
...und bekam folgende Meldung:

01.
S:\Misc\Statistik-Archiv\000 Testdateien 
02.
>Set "Startdir=S:\Misc\Statistik-Archiv\000 Testdateien" 
03.
Datei nicht gefunden 
04.
S:\Misc\Statistik-Archiv\000 Testdateien 
05.
>
Ich hab das alles auch noch nur mit "test" (ohne".bat") und mit "call test.bat" probiert - mit demselben Ergebnis.
Auch wenn ich es mit einem anderen Dateinamen versuche (vielleicht gibt's ja mit dem Namen "test" Probleme...) ging's nicht.

Schönen Gruß,
Ela
Bitte warten ..
Mitglied: Biber
29.01.2009 um 13:47 Uhr
Moin Ela,

nicht entmutigen lassen...
Die Fehlermeldung "Datei nicht gefunden" kommt ja nicht von dem "SET startdir=lalala"-Befehl, sondern eine Zeile tiefer von dem DIR-Befehl, der nu mal keine " "%startdir%\*_2009????_??????.xls"-Dateien findet in diesem und den darunterliegenden Verzeichnissen.

Also lass die Batchdatei im Moment Batchdatei sein und bleibt am CMD-Prompt und überprüf bitte nochmals die Wildcardkonvention der *.xls-Dateien.

Vorgehen.
  • Erst auf S: und in's "S:\Misc\Statistik-Archiv\000 Testdateien"-Verzeichnis wechseln (das kannst Du jetzt wahrscheinlich schon, wenn Dich einer morgens um 03:17h weckt und mit verbundenen Augen an die Tasten setzt).
  • dann zuerst DIR /s /b *.xls eingeben --> da sollten unter anderem die *.xls-Dateien gelistet werden, die Du brauchst und ein paar andere, die nicht dazugehören.
  • dann den DIR-Befehl weiter mit der "richtigen" Wildcard eingrenzen, bis nur noch die Dateien übrig bleiben, die Du haben willst.
  • und diese Wildcard kannst Du dann in den Batch übernehmen

Grüße
Biber
Bitte warten ..
Mitglied: Ela1076
30.01.2009 um 13:28 Uhr
Hallo,

ich bin jetzt gerade ein bisschen verwirrt... Also das Problem ist ja, dass sich das Programm zum Umbenennen der Dateien gar nicht erst starten lässt! Es befindet sich eben im Ordner S:\Misc\Statistik-Archiv\000 Testdateien und heißt test.bat. Auf das Verzeichnis komme ich jetzt schon ohne Probleme - bestimmt auch um 03:17, da hast Du Recht ;o) - aber dann geht's nicht weiter.

Ich hatte es so verstanden: batch-Datei (die das Programm zum Umbenennen enthält) mit Doppelklick aus dem Explorer starten, ist nicht sinnvoll zum Testen (da das Fenster nur 1 Sekunde erscheint und man kein Ergebnis sieht).
Deshalb besser das Programm über den CMD-Prompt starten - und da hänge ich jetzt.

Ob die gewählten Wildcards richtig sind, kann sich ja dann erst herausstellen, aber so weit bin ich leider noch gar nicht.

(Den von Dir vorgeschlagenen DIR-Befehl habe ich aber ausprobiert, um die passenden Wildcards zu finden!)

Viele Grüße,
Ela
Bitte warten ..
Neuester Wissensbeitrag
CPU, RAM, Mainboards

Angetestet: PC Engines APU 3a2 im Rack-Gehäuse

(1)

Erfahrungsbericht von ashnod zum Thema CPU, RAM, Mainboards ...

Ähnliche Inhalte
Batch & Shell
CMD-Batch hilfe: Dateiname zu txt (2)

Frage von Syscore64 zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Problem bei einer For Schleife (2)

Frage von Juergen42 zum Thema Batch & Shell ...

Batch & Shell
gelöst Spezielles Batch Problem mit Zahlen 20 + 29 (2)

Frage von narthan zum Thema Batch & Shell ...

Batch & Shell
gelöst Batch Ordner erstellen und verschieben (6)

Frage von Fromeonly zum Thema Batch & Shell ...

Heiß diskutierte Inhalte
Switche und Hubs
Trunk für 2xCisco Switch. Wo liegt der Fehler? (14)

Frage von JayyyH zum Thema Switche und Hubs ...

DSL, VDSL
DSL-Signal bewerten (13)

Frage von SarekHL zum Thema DSL, VDSL ...

Windows Server
Mailserver auf Windows Server 2012 (9)

Frage von StefanT81 zum Thema Windows Server ...