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

Verzeichnis überwachen und neue Dateien automatiosch umbenennen

Frage Entwicklung Batch & Shell

Mitglied: diwaffm

diwaffm (Level 2) - Jetzt verbinden

02.02.2010, aktualisiert 18.10.2012, 7929 Aufrufe, 8 Kommentare

Hi Leute,

ich suche ein Tool / Skript unter Windows, dass ein Verzeichnis überwacht und neu dort abgelegte (Text-)Dateien umbenennt - und zwar umbenennt, in dem es Teile der ersten Zeile des Inhalts als Dateinamen verwendet...

Zwar habe ich für einzelne Teilaufgaben hier schon Infos gefunden - schaffe es aber nicht, diese vernünftig zusammenzufügen.

Die umzubenennenden Dateien kann ich in einem separaten (Unter-) Verzeichnis ablegen und mit einem Prefix versehen, der gelöscht werden kann, wenn die Datei bearbeitet ist. Alternativ könnte die ganze Originaldatei nach der Bearbeitung gelöscht werden.
Die bearbeitete/umbenannte Datei kann dann in einem anderen Verzeichnis gespeichert werden.

Die Dateien haben Namen in der Form "90000019-90000019-02.lif"

Die erste Zeile hat einen Inhalt ähnlich dieser Zeile:

90000019,90000019,2,60m (7HK) Riege 3 MJA,,,,,,,

Die Datei soll in "60m (7HK) Riege 3 MJA-02.lif" umbenannt werden...


In der Zwischenzeit schaffe ich es, mit alle Dateien mit Namen wie "__ 90000019-90000019-02.lif" anzeigen zu lassen (den PRefix "__ " lasse ich durch die Anwendung dazuschreiben, die die Datei erzeugt.)

Die Datei umbenennen bzw. kopieren kriege ich auch noch hin.
Doch den neuen Namen aus der Datei extraieren kriege ich nicht hin...

Merci

dirk
Mitglied: AndreasBrecht
02.02.2010 um 12:00 Uhr
Wo genau hängt es denn? Kannst Du die Datei nicht einlesen, oder weißt Du nicht, wie Du den Teilstring aus dem Eingelesenen rausfummeln sollst?
Bitte warten ..
Mitglied: diwaffm
02.02.2010 um 12:07 Uhr
Wohl eine Kombination aus beidem

Das "Rausfummeln" sollte eigentlich mit

FOR /F "skip=3 tokens=1 delims=," %%j in (%%Datei%%) do

gehen.

Allerdings sucht er in DIESER Variante im Dateinamen und nicht in der Datei...

Ciao

dirk
Bitte warten ..
Mitglied: diwaffm
02.02.2010, aktualisiert 18.10.2012
Ich habe nun
01.
	FOR /F "tokens=4 delims=," %%j in ( 90000019-90000019-02.lif ) do	echo 8- %%j
ausprobiert - und bekomme die jeweils 4. "Spalte" ALLER Zeilen der Datei 90000019-90000019-02.lif angezeigt.

Ich brauch aber nur die erste Zeile.

Ein ähnliches Problem wird hier (http://www.administrator.de/forum/per-batch-neue-dateien-in-verzeichnis ...) beschrieben.
Leider komme ich mit der Lösung dort nicht weiter.

Wenn ich

01.
FOR %%i in (*.lif) do ( 
02.
	echo %%~ni 
03.
	FOR /F "tokens=4 delims=," %%j in ( 'echo %%~ni' ) do echo  %%j 
04.
)
ausführe, bekomme ich durch "echo %%~ni" die Dateinamen angezeigt - allerdings kommt keine
Ausgabe innerhalb der inneren FOR Schleife...

Ciao

dirk
Bitte warten ..
Mitglied: AndreasBrecht
02.02.2010 um 13:32 Uhr
Lass es mich mal so sagen, wenn Du nix gegen vb script einzuwenden hast,kann ich Dir sagen wie's geht, aonst eher nicht. (Du kannst auch mit cscript.exe ein script aus einer batch aufrufen).
Bitte warten ..
Mitglied: diwaffm
02.02.2010 um 15:41 Uhr
Mit dem Skripting Host hab' ich früher auch mal gespielt - ist aber laaange her

Solange er zum Ziel führt, ist mir der Weg eigentlich egal...

Ciao

dirk
Bitte warten ..
Mitglied: diwaffm
02.02.2010 um 18:31 Uhr
So,

hier mal meine bisherigen Ergebnisse:
01.
@echo off 
02.
CLS 
03.
 
04.
for %%i in (__*.lif) do ( 
05.
	echo Betrachte Datei %%i 
06.
	Set Datei = %%i 
07.
	FOR /F \"tokens=4 delims=,\" %%j in (%Datei%) do ( 
08.
		set name=%%j 
09.
		goto :exit 
10.
11.
	:exit 
12.
	echo Name: \"%name%\" 
13.
	FOR /F \"tokens=3 delims=-\" %%a in (\"%i\") do ( 
14.
	  set lauf=%%a 
15.
16.
	echo Lauf: \"%lauf%\" 
17.
 
18.
	echo  Verschiebe Datei \"%%i\" nach \"%name%-%lauf%\" 
19.
	rename \"%%i\" \"%name%-%lauf%\" 
20.
21.
 
22.
:eof
Es ist eine Datei im Verzeichnis, die der Maske \"__*.lif\" entspricht - und diese enthält die folgende erste Zeile:

90000021,90000021,2,60m Hürden (5HK) Riege 7 WJB,,,,,,,

Es müsste also als \"name\" eigentlich \"60m Hürden (5HK) Riege 7 WJB\" ausgelesen werden.

Und da der Dateiname \"__ 90000021-90000021-02.lif\" lautet, müsste \"lauf\" \"02.lif\" enthalten.

Beide Variablen sind aber leer...

Dirk
Bitte warten ..
Mitglied: pieh-ejdsch
03.02.2010 um 00:45 Uhr
Hallo Dirk,

haben Deine lif Dateien nun am Anfang dieses __ unterstichvorsatzetwas oder nicht?
in Deiner nächsten Schleife Zeile 13. ist Deine lif wieder im Übergeordneten Verzeichnis oder irgendwie undefinierbar.

möchtest Du diese Datei nun Verschieben oder nur umbenennen? Im Moment egal die Zeile wird in der Datei überprüft und nur wenn diese im Dateinamen enthalten ist auch entsprechend umbenannt.

01.
@echo off & setlocal 
02.
chcp 1252>nul 
03.
for %%i in (*.lif) do ( 
04.
	echo Betrachte Datei %%i 
05.
	set "Datei=%%i" 
06.
	for /f "tokens=1-3 delims=-" %%j in ("%%i") do set "end=%%l" & set "pre=%%j%%k"  
07.
	call :readone 
08.
09.
chcp 850>nul 
10.
pause 
11.
:readone 
12.
for /f "useback tokens=1-9 delims=, " %%i in ("%Datei%") do if not "%pre%" == "%%i%%j" (goto :eof) else echo Verschiebe "%Datei%" & move "%Datei%" "%%l %%m %%n %%o %%p %%q-%end%" & goto :eof
für einen Pfad zum Arbeiten würde ein
pushD "D:\Verzeichnis" empfehlenswert sein als zweite Zeile.

Gruß Phil
Bitte warten ..
Mitglied: diwaffm
03.02.2010 um 09:06 Uhr
Zitat von pieh-ejdsch:

haben Deine lif Dateien nun am Anfang dieses __ unterstichvorsatzetwas oder nicht?

Ja, sie haben...

in Deiner nächsten Schleife Zeile 13. ist Deine lif wieder im Übergeordneten Verzeichnis oder irgendwie undefinierbar.

?
Das sollte auf die gleiche Datei - nur halt diesmal auf den Inhalt verweisen...


möchtest Du diese Datei nun Verschieben oder nur umbenennen?

Umbenennen - die original-Datei wird nicht benötigt.

>Im Moment egal die Zeile wird in der Datei überprüft
und nur wenn diese im Dateinamen enthalten ist auch entsprechend umbenannt.

?
Aus der ersten Zeile soll der 4. Teilstring extraiert werden und als neuer Dateiname verwendet werden...


Dein Skript werde ich mir mal in Ruhe vornehmen.
Ich habe meines gestern Abend noch ein wenig angepasst - und es scheint zu funktionieren.
Das werde ich heute Mittag in "live" sehen

ciao

dirk
Bitte warten ..
Neuester Wissensbeitrag
Internet

Unbemerkt - Telekom Netzumschaltung! - BNG - Broadband Network Gateway

(3)

Erfahrungsbericht von ashnod zum Thema Internet ...

Ähnliche Inhalte
Erkennung und -Abwehr
Überwachen welche Dateien auf USB Stick-Festplatte kopiert werden (4)

Frage von daniel.buchner77 zum Thema Erkennung und -Abwehr ...

Windows Tools
gelöst Tool um neue Dateien aus Ordner A EINMAL in Ordner B zu kopieren (6)

Frage von Archimedes zum Thema Windows Tools ...

Batch & Shell
gelöst Dateien in einem Verzeichnis mergen - rekursiv (10)

Frage von frad1980 zum Thema Batch & Shell ...

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

Frage von JayyyH zum Thema Switche und Hubs ...

Windows Server
Outlook Verbindungsversuch mit Exchange (15)

Frage von xbast1x zum Thema Windows Server ...

DSL, VDSL
DSL-Signal bewerten (14)

Frage von SarekHL zum Thema DSL, VDSL ...