hobelbank
Goto Top

Batch-Datei Dateinamen umbenennen

Hallo Community,

ich habe hunderte Ordner mit *.xls Dateien mit unterschiedlichen Namen z.B. Januar.xls, Februar.xls. Diese möchte ich jetzt einheitlich mit einem Präfix (Format_*.xls) umbennen. Einige besitzen dieses Präfix schon also heißen bereits Format_Januar . Zudem muss in jeder *.xls Datei eine Tabelle mit den Namen "Format" haben.

Nun benötige ich eine Batch-Datei, die mir

1. checkt ob die Datei das Präfix bereits besitzt ( Format_*.xls), wenn ja diese Datei nicht umbenennen
2. checken ob in allen Dateien eine Tabelle mit dem Name "Format" vorhanden ist, falls nicht wenn möglich mir den Dateiname in ein Logfile speichern

Zu 1. könnte ich mir mit einer if abfrage vorstellen und anschließend mit rename umbenennen falls nötig
Zu 2. fällt mir kein Ansatz ein wie ich die Batchdatei dazukriege die Tabellenblätter auf "Format" zu checken?!


Danke schonmal im Voraus!

Gruß
Felix
Kommentar vom Moderator Biber am Mar 15, 2012 um 09:53:03 Uhr
Batch-Datei Dateinamen umbennen
Set /a rgc+=1
#799
Zu 1. könnte ich mir mit einer if abfrage vorstellen und anschließend mit rename umbennen falls nötig
...oder mit dem Befehl umbennen renamen falls möglich...
set /a rg+=1
#800
Danke schonmal im Vorraus!
... und noch ein Tropfen, der dem Fass den Boden aufsetzt..

Content-Key: 181988

Url: https://administrator.de/contentid/181988

Printed on: April 23, 2024 at 21:04 o'clock

Member: Skyemugen
Skyemugen Mar 15, 2012 at 07:46:11 (UTC)
Goto Top
Aloha,

zu 1. Das Thema ist neu und interessant, jedoch kauen wir ungern ewig auf altem Fleisch herum, darum wäre die Suchfunktion durchaus mehr als sinnvoll nutzbar (sofern man nicht nach dem rgc umbennen sucht, wobei, trifft auch viel).
wäre natürlich einfach mit einer for /f-Schleife ein dir /b /s "%Pfad%\*.xls"^|findstr /v /B Format durchzujagen, um dann ein ren "%%s" "Format_%%~nxs" durchzuführen
zu 2. pure batch? Vergiss es, maximal mit .vbs included und da warte dann mal auf unsere vbsler (bastla, TsukiSan, Friemler)

greetz André

@t-mo, wer schnell haben will, sollte vbs nutzen, von schnell war hier nicht die Rede face-wink
Solange cmd schneller ist als Windows-Suche, ist für mich alles in Butter.
Mitglied: 60730
60730 Mar 15, 2012 at 07:49:11 (UTC)
Goto Top
moin,

mal ein kleiner denkanstoß...

Welche Dateien findet dieser Befehl?
dir /s *.xls
und jener?
dir /s Format_*.xls

Ps:
Nun benötige ich eine Batch-Datei, die mir
Zu 1. könnte ich mir mit einer if abfrage vorstellen und anschließend mit rename umbennen falls nötig
Zu 2. fällt mir kein Ansatz ein wie ich die Batchdatei dazukriege die Tabellenblätter auf "Format" zu checken?!

1. ich würde eine Schleife nehmen
2. ich vermute, du wirst das mit einem VBA lösen müssen...

Gruß

Edit

@ André (nein immernoch via ipad unterwegs)
2 dumme 3 gedanken? face-wink

Bei 100erten dateien, wuerde ich tatsaechlich zwei dirs auspipen, und dann via findstr /v die _ dateien auskillen und den rest verhackstueckeln.
Sollte bei dem umfang sehr viel schneller gehen.
/edit
Member: Hobelbank
Hobelbank Mar 15, 2012 at 08:47:37 (UTC)
Goto Top
Vielen Danke für die schnelle Antwort.

Auf die Dauert kommt es nicht an ;) sollte nur so einfach wie möglich sein und funktionieren.

Hier mal soweit die Umbennenung. Funktioniert soweit auch leider nicht in den Untververzeichnissen.. mit For /r sollte das doch normal funktionieren? kann mir da noch einer helfen?

@echo off
set "rootdir=C:\Tabellen"
set "prefix=Format"
set "filefilter=*.xls"
FOR /F "delims=" %%i in ('dir "%rootdir%\%filefilter%" /B^|findstr /V /I /B "%prefix%"') do ren "%%~fi" "%prefix%%%~nxi"


Zu 2. werde ich wohl auf VBA zurückgreifen müssen trotzdem danke

Grüße
Member: Skyemugen
Skyemugen Mar 15, 2012 at 09:24:02 (UTC)
Goto Top
...

und den Schalter /S hast du beim dir jetzt weggelassen, weil ... es dann ~f überflüssig macht?

P.S.: Wir haben hier eine schöne ##blue|## Formatierung
Mitglied: 60730
60730 Mar 15, 2012 at 09:43:01 (UTC)
Goto Top
Salue

Zitat von @Skyemugen:
...

P.S.: Wir haben hier eine schöne ##blue|## Formatierung

Aber leider nooch keinen #rgc fuer €echo off....

Ich wuerde ja dem do ren ein echo spendieren..

Aussser du bist einer von den ganz harten, die schon in den garten duerfen, denn nur do ren ballert alles wech...

Dann ist ren natuerlich auch so ein ding, besser als move, denn das ballert evtl. Vorhandene richtig benamste dateien gnadenlos in den orkus....

Mein tipp nimm zip und sicher die erstmal alle.......
Mitglied: 60730
60730 Mar 15, 2012 at 10:07:31 (UTC)
Goto Top
Salve
[OT]
Kommentar von Moderator Biber am 15.03.2012 um 10.53.03 Uhr
Set /a rgc+=1

hmmm - wie macht er das nur immer - via setx wuerde ich ja verstehen, aber ein set alleine ist doch beim dosboxzuboxxen wech...

[/OT]
Member: bastla
bastla Mar 15, 2012 at 10:11:32 (UTC)
Goto Top
Hallo Hobelbank und willkommen im Forum, hallo Skye & T-Mo!

Thema 2 ließe sich etwa so abhandeln:
@echo off & setlocal
set "rootdir=C:\Tabellen"  
set "filefilter=*.xls"   
set "sheet=Format"  
set "log=C:\Tabellen\Fehlend.txt"  

set C=%temp%\CheckForSheet.vbs
 >%C% echo SName=LCase(WScript.Arguments(1))
>>%C% echo Set oXL=CreateObject("Excel.Application")  
>>%C% echo With oXL
>>%C% echo     .Workbooks.Open WScript.Arguments(0):For Each Sh In .Sheets:If LCase(Sh.Name)=SName Then:F=True:Exit For:End If:Next:.ActiveWorkbook.Close False
>>%C% echo     .Application.Quit
>>%C% echo End With
>>%C% echo If Not F Then WScript.Quit 1

del "%Log%" 2>nul  
for /f "delims=" %%i in ('dir /s/b "%rootdir%\*%filefilter%"') do cscript //nologo %C% "%%i" "%sheet%"||>>"%log%" echo %%i  
Dem VBScript werden Datei- und Tabellenname als Parameter übergeben. Die Rückmeldung erfolgt per Errorlevel (1 = "Tabelle nicht gefunden").

Grüße
bastla
Member: bastla
bastla Mar 15, 2012 at 10:13:18 (UTC)
Goto Top
[OT] @t-mo
ein set alleine ist doch beim dosboxzuboxxen wech...
Du glaubst doch wohl nicht, dass Biber die jemals zumacht? face-wink

Grüße
bastla
[/OT]
Member: Hobelbank
Hobelbank Mar 15, 2012 at 12:13:30 (UTC)
Goto Top
Zitat von @Skyemugen:
...

und den Schalter /S hast du beim dir jetzt weggelassen, weil ... es dann ~f überflüssig macht?

P.S.: Wir haben hier eine schöne ##blue|## Formatierung

Danke hat geklappt face-smile
Member: Hobelbank
Hobelbank Mar 15, 2012 at 12:50:32 (UTC)
Goto Top
Hallo bastla,

Danke für die Antwort, beim ausführen des Scripts erhalte ich einen Fehler (Kompilierungsfehler in Microsoft VB Script). In Zeile 1 Zeichen 1 "ungültiges Zeichen" mit dem Code 800A0408
Mit VBS kenn ich mich gar nicht aus.. kannst du mir sagen was falsch ist?

Vielen Danke

Felix
Member: Skyemugen
Skyemugen Mar 15, 2012 at 13:17:56 (UTC)
Goto Top
Aloha Felix,

ist es möglich, dass du bastlas Skript als .vbs gespeichert und ausgeführt hast?

Denn der besagte Fehler klingt so als ob dem so sei (1. Zeichen = @ = vbs Kill), ich hoffe, du hast bemerkt, dass bastlas Skript eine batch-Ausführung ist und kein pures vbs, das vbs steckt da nur drin und wird extra aufgerufen.

greetz André
Member: Hobelbank
Hobelbank Mar 15, 2012 at 13:27:14 (UTC)
Goto Top
Ouh wie dumm von mir...

Klar jetzt funktionierts face-smile danke für eure Hilfe!

Gruß