cre4tin0
Goto Top

Batch-Datei in unbestimmten Verzeichnis erstellen

Hallo zusammen face-smile
Da ich jetzt Einiges gelesen habe und zu dem Schluß gekommen bin, dass Ihr hier die Größten seid, habe ich mich mal hier angemeldet um Eure grauen Zellen mal zum Glühen zu bringen :D
Nein Spaß. Ich denke, so schwer wird das für Leute, die sich auskennen, nicht sein.

Hoffe, Ihr nehmt es mir nicht übel, wenn ich im Prinzip gar keine Ahnung habe und erst seit heute Mittag 12:00 Uhr erfahren habe, dass es "Batch-Dateien" gibt.

Ich war auf der Suche bei Google für WindowsVista einen ShortCut für einen "Neuen Ordner" zu finden. Ich kann mir zwar nicht vorstellen, dass es das nicht gibt, ich bin aber absolut nicht fündig geworden.
Im Zuge meiner kleinen Recheche bin ich dann auf Batch-Dateien gestoßen. Das ist wirklich eine super Sache auf den ersten Blick. Ich dachte mir, dass ich eine *.bat-Datei erstelle, auf die ich dann mit Hilfe von WinHotKey einen ShortCut legen kann. Hab da klassisch an "STRG + N" gedacht.
Habe auch erfahren, dass man theoretisch auch eine Verkünpfung der Datei erstellen könnte und darauf dann eine Tastenkombination festlegen könnte. Aber dabei ist mir das "ALT" bei "STRG + ALT + N" übel aufgestoßen. Deshalb das Tool dazu.

Okee, das ist die Vorgeschichte, weshalb ich um knapp 22:00 Uhr immer noch auf der Arbeit hänge :D Vor allem auf einem Freitag recht undankbar. Aber mich hat der Ehrgeiz gepackt, weil ich Holzkopf ja wohl nicht als Erster auf die Idee gekommen bin mit dem Neuen Ordner als ShortCut. Da werden sich ja wohl schon irgendwelche klugen Köpfe ausreichend Gedanken zu gemacht haben...

So, ich habe Folgendes herausgefunden:

:Datumsbestimmung
FOR /F "tokens=1-4 delims=/.- " %%A IN ("%date%") DO (SET TT=%%A&SET MM=%%B&SET JJJJ=%%C)

SET Datum=%JJJJ%-%MM%-%TT%


:Uhrzeitbestimmung
FOR /F "tokens=1-6 delims=:, " %%A IN ("%time%") DO (SET hh=%%A& SET mm=%%B& SET ss=%%C& SET ms=%%D)

SET Uhrzeit=%hh%~%mm%~%ss%


:Neuer Ordner
SET NeuerOrdner=%Datum%_%Uhrzeit%
md "[PFAD]\%NeuerOrdner%" 2>NUL

(http://forum.chip.de/programmierung-allgemein/batch-neuen-ordner-erstel ...); Wenn ich das hier so schreiben darf, ohne mir die Ungunst von Euch aufzuhalsen :D)


Das Ding funktioniert einwandfrei. Wäre schön, wenn die Datei nicht die Uhrzeit als Namen anzeigen würde, sondern sie direkt in diesem "Umbennen-Modus" erstellt werden würde. Aber das wäre eher die Kirsche auf der Torte, wenn jemand von euch diese Ungereimtheit nebenbei mit bearbeiten würde.
Was hierbei das Problem ist, ist, dass der Neue Ordner nur in dem Verzeichnis erstellt wird, in dem auch die Batch-Datei abgelegt ist.

Habe mir dazu natürlich auch was kleines, anfängerhaftes einfallen lassen, was aber natürlich das Problem nicht wirklich löst.
Ich hatte über die Funktion "Move" den Neuen Ordner (, der als "[PFAD]" erstellt wird, falls es jemand ausporbiert) direkt verschiebt, in ein vorher festgelegtes, neues Verzeichnis. Ich habe zum Probieren einen Ordner auf dem Desktop namens "Test" mit Unterordner "12345" erstellt, wodrin die Batch-Datei abgelegt ist. Es wird dann, soweit ich das beurteilen kann, der Ordner "[PFAD]" dort erstellt und direkt in den Ordner "Zielordner" (auch auf Desktop) verschoben. Aber denke, das wisst Ihr schon alles besser als ich, wenn Ihr auf dieses simple Programm einen Blick werft.
Die Eingabe sah dann am Ende so aus:

:Datumsbestimmung
FOR /F "tokens=1-4 delims=/.- " %%A IN ("%date%") DO (SET TT=%%A&SET MM=%%B&SET JJJJ=%%C)

SET Datum=%JJJJ%-%MM%-%TT%


:Uhrzeitbestimmung
FOR /F "tokens=1-6 delims=:, " %%A IN ("%time%") DO (SET hh=%%A& SET mm=%%B& SET ss=%%C& SET ms=%%D)

SET Uhrzeit=%hh%~%mm%~%ss%


:Neuer Ordner
SET NeuerOrdner=%Datum%_%Uhrzeit%
md "[PFAD]\%NeuerOrdner%" 2>NUL


Move c:\Desktop\Test\12345\[PFAD] c:\Desktop\Zielordner

Das funktioniert ebenfalls super, wenn ich in irgendwelchen völlig anderen Verzeichnissen aktiv bin und dann mein WinHotKey mit der Tastenkombination "STRG + N" bemühe. Es wird einwandfrei der Ordner "[PFAD]" im "Zielordner" erstellt.


So, und wer sich bis hierhin durchgekämpf hat, wird jetzt sicherlich nicht die Pointe verpassen wollen ;)
Der Punkt ist, dass ich einen Neuen Ordner ja nicht in einem vorgeschriebenen, festgelegten Verzeichnis erstellen möchte, sondern dieses Programm variabel anwendbar sein soll.
In dem Verzeichnis, in dem ich dann arbeite, also "das ich mit der Maus angeklickt habe", soll jetzt der Neue Ordner (in dem Fall "[PFAD]") verschoben werden.

Entweder soll sich dann die Batch-Datei immer diesen aktiven (,durch die Maus angeklickten,) Dateipfad auslesen, wenn ich "STRG + N" drücke (woran ich gedacht habe), oder Ihr wisst eine andere, viel bessere Lösung, von der ich wahrscheinlich gar keine Ahnung hab, dass es diese gibt.


So, jetzt ist aus "knapp 22:00 Uhr" schon viertel nach Elf geworden. Das war eine schwierige Geburt.

Wenn jetzt noch das, was ich rüberbringen wollte, halbwegs verständlich war, ist das bestimmt eine lösbare Aufgabe für Euch und ich würde mich sehr über Ideen und entsprechende Anweisungen freuen.
Vielen Dank im Voraus für Eure Mühen.

Schönen Abend


Cre4tin0

Content-Key: 212567

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

Printed on: April 19, 2024 at 03:04 o'clock

Member: rubberman
rubberman Jul 27, 2013 updated at 00:13:48 (UTC)
Goto Top
Hallo Cre4tin0, willkommen im Forum.

Ich denke du hast da einen Denkfehler.
Stell dir vor du hast deinen Browser geöffnet und arbeitest nun mit dem Hotkey. Was soll nun passieren? Ein neues Verzeichnis im Browser ... ähm ... nee oder?
Das einzige was passiert ist, du startest deinen Batch. Der hat keine Ahnung davon, was das aktive Fenster ist und was dort gerade angezeigt wird. Und das ist auch gut so.

Möglich wäre ein neuer Kontextmenü-Eintrag für Verzeichnisse in der Registry. Dort gibt es den Parameter %V der das derzeitige Verzeichnis repräsentiert.
Also speichere fogenden Code als
C:\timestamp\timestamp.bat
@echo off &setlocal
if "%~1"=="" goto :eof  
for /f "tokens=1-6 delims=.,: " %%i in ("%date:* =% %time%") do (  
  if %%l lss 10 (md "%~1\%%k-%%j-%%i_0%%l~%%m~%%n") else md "%~1\%%k-%%j-%%i_%%l~%%m~%%n"  
)
(Dabei gehe ich davon aus, dass Datum und Zeit den deutschen Einstellungen entspricht.)

Nun zum Registryeintrag. Speichere folgendes in einer *.reg Datei ab, führe sie aus und importiere so die Werte:
Windows Registry Editor Version 5.00

[HKEY_CLASSES_ROOT\Directory\Background\shell\Timestamp Folder\command]
@="\"C:\\timestamp\\timestamp.bat\" \"%V\""  

Nun findest du den Menüpunkt Timestamp Folder bei Rechtsklick in ein Explorerfenster.
Da du mit Tastenkombinationen arbeiten willst, drücke [Shift]+[F10]+[T] (evtl. kann die letzte Taste bei dir eine andere sein).

Grüße
rubberman
Member: Cre4tin0
Cre4tin0 Jul 27, 2013 at 22:42:16 (UTC)
Goto Top
Hallo Rubberman,


den Denkfehler muss ich wirklich zugeben. Da haste mich erwischt :D

Egal, wichtiger ist, mich für deine schnelle Antwort zu bedanken.
Hab das natürlich auch direkt so gemacht, wie du es beschrieben hast. Hat auch gut geklappt. Die Funktion ist jetzt beim Rechtsklick im Explorer oder Desktop immer vorhanden. Das vereinfacht die Sache schon,obwohl "Rechtsklick -> Neu -> Neuer Ordner" auch nicht wirklich schwierig ist;)

Bei mir ist mit Inet im Moment bisschen kompliziert, deshalb auch die späte Reaktion meinerseits.


Ich lasse die Frage trotzdem nochmal ein paar Tage offen, dann drück ich den Hacken oben rechts ;)


Vielen Dank und liebe Grüße aus Chemnitz


Cre4tin0