BATCH: Move File?

3 Antworten

Eine Batch welch als Droptarget fungiert:

soll er sie nach Drohne\Dump kopieren. Bei Sony halt Sony\Dump usw. 

Die Batch erkennt automatisch den Herkunftsordner der Datei und erzeugt nötigenfalls den Unterordner Dump .

Du musst auch nicht die Batch jedesmal in den Ordner mit den Dateien kopieren,. Der Batch ist es Egal wo sie sich befindet.

demo1.cmd

@echo off
chcp 65001 >nul

 rem optional,damit die Batch nicht ohne Parmeter gestaret  wird, um Fehler im Folgecode zu vermeiden
if "%~1"=="" (
    echo ziehe eine Datei auf diese Batch..."%~nx0"
    timeout 5 >nul
    ext /b
)
  rem  falls der Unterordner Dump im jeweiligen  Verzeichnis noch nicht existiert
md "%~dp1Dump\"  2>nul
move "%~1" "%~dp1Dump\"
pause

...das war die "Biligvariante" den sie kann mit jeder Aktion nur eine Datei verschieben.

Mit 2 Zeilen mehr kann sie auch mehrere Dateien in einem Rutsch bewegen. (wieviele ist abhängig von der Länge der einzelnen Dateipfade. Die Maximale Zeilenlänge von Kommandoteilen beträgt unter Windows beträgt 8192 Zeichen. Das heist mindestensten 30 Dateien sind auf jeden Fall möglich )

demo2.cmd

@echo off
chcp 65001 >nul
if "%~1"=="" (
    echo ziehe eine/meherere Dateien auf diese Batch..."%~nx0"
    timeout 5 >nul
    ext /b
)

for %%a in (%*) do (
    md "%%~dpaDump\"  2>nul
    move "%%~fa " "%%~dpaDump\"
)
pause

Ziehe einfach beliebige Dateien/Ordner auf die Batchdatei.

(probiers erst mal mit Dateien , welch Dir nicht wichtig sind... )

Woher ich das weiß:eigene Erfahrung – Ich mach das seit 30 Jahren
Sven8219 
Fragesteller
 11.09.2022, 16:40

Oha, vielen Dank. Hab sie eben getestet. Also wenn ich sie über Touch Portal auf die selektierte Datei anwende, klappt es nicht. Wenn ich die Datei aber auf die Batch ziehe, klappt es.

Ist es möglich sie so zu schreiben, dass die Aktion auf die selektierte Datei ausgeführt wird? Also ohne drauf ziehen.

0
Erzesel  11.09.2022, 16:44
@Sven8219

ich habe keine Ahnung wie TouchPortal Dateien an Aufzurufende Programme übergibt. (ich kenne das Programm nicht)

Der Explorer übergibt immer den vollen Pfad jeder markierten Datei

0
Sven8219 
Fragesteller
 11.09.2022, 16:47
@Erzesel

TouchPortal ist eine externe APP (auf dem Tablet) worüber ich Aktionen ausführen kann. Hier eben die batch Datei. Ich kann also eine Datei selektieren und dann auf dem Tablet auf ausführen drücken. Es wird im Hintergrund, ohne die Selektion zu verändern, die Batch ausgeführt.

0
Erzesel  11.09.2022, 16:58
@Sven8219

mit folgender Batch kannst du Dir anschauen , was bei der Parameterübergabe an die Batch aufgerufen wird:

@echo off
chcp 65001 >nul

echo aufgerufene volle Kommndozeile:
echo %CmdCmdLine%
echo:
echo übergeben parameter : %*
echo: 
echo dito einzeln:
for %%a in (%*) do (
     echo "%%~a"
)
pause
0
Erzesel  11.09.2022, 17:03
@Sven8219

dann hast Du vielleicht den Aufruf der Batch durch dein Programm falsch konfiguriert. Irgendwo musst Du schließlich in Deinem Programm den Batchaufruf einrichten.

0
Sven8219 
Fragesteller
 11.09.2022, 17:21
@Erzesel

Die Batch liefert folgende Info:

aufgerufene volle Kommandozeile:
cmd.exe /k Move_File.bat (das is meine Batch)

übergabe parameter :

dito einzeln:
Drücken Sie eine beliebige Taste . . .

Anschließend bin ich in dem Ordner mit der Batch (D:\Sonstiges)

0
Erzesel  11.09.2022, 18:19
@Sven8219

...dann werden überhaupt keine der markierten Dateien von "TouchPortal" übergeben . wie sollte TP erfahren was im Explorer markiert ist?

Wenn Drag&Drop auf die Batch funktioniert, nutze es. Bequemer geht's schon fast nicht.

1
Sven8219 
Fragesteller
 11.09.2022, 19:21
@Erzesel

Hm...hatte gehofft das die Selektion irgendwie ausgelesen wird :( Trotzdem vielen Dank für den Code, werd es über drag & drop machen

0

Hallo Sven8219!

Der Inhalt der BAT-Datei:

@echo off
move %1 c:\temp

c:\temp ist in dem Beispiel der Zielordner.

Diesen Pfad ersetzen durch deinen Pfad zu Dump.

BAT-Datei auf den Desktop legen, Videodateien drauf ziehen, fertig.

Mit leerem Testordner prüfen, ob es klappt.

LG

gufrastella

Sven8219 
Fragesteller
 11.09.2022, 15:09

Danke für den Code. Wie kann ich anstelle von c:... einfach den Unterordner im Entsprechenden Ordner wählen? Ich habe mehrer Ordner, Sony, Drohne usw. Jeder hat einen Ordner Dump. Wenn ich also im Ordner Drohne die BATCH ausführe, soll er sie nach Drohne\Dump kopieren. Bei Sony halt Sony\Dump usw. sprich einfach im Ordner der selektierten Datei den Unterordner Dump.

0
gufrastella  11.09.2022, 15:13
@Sven8219

Hast du die Ordnerstruktur

Videos

-Drohne

--Video-Datei 1, Video-Datei 2, Video-Datei 3, Video-Datei 4

-Sony

--Video-Datei 1, Video-Datei 2, Video-Datei 3, Video-Datei 4

-Spielfilm

--Video-Datei 1, Video-Datei 2, Video-Datei 3, Video-Datei 4?

0
Sven8219 
Fragesteller
 11.09.2022, 15:17
@gufrastella

Ja.
Ordner Sony: Videodateien + Ordner Dump
Ordner Drohne: Videodateien + Odner Dump
Ordner Osmo: Videodateien + Odner Dump
usw.

0
gufrastella  11.09.2022, 15:20
@Sven8219

Warum schiebst du die Video-Dateien nach dem Markieren nicht direkt in den Ordner Dump?

0
Sven8219 
Fragesteller
 11.09.2022, 15:25
@gufrastella

Ich hab teilweise dreistellig Clips im Ordner, Ich muss immer wieder scrollen zum verschieben. Ich weiß, ich spar mir vielleicht 5 Sekunden, Aber Faulheit siegt :)

0
gufrastella  11.09.2022, 15:29
@Sven8219

OK, verstehe.

In jeden der Unterordner (Drohne, Sony....) kommt eine BAT-Datei mit dem Pfad zu deinem Dump-Unterordner

z.B.

@echo off
move %1 C:\Users\Name\...\Sony\Dump

Die Pünktchen stehen für den Rest des Pfades. Den Pfad siehst du in der Adresszeile des Ordners, wenn du hinter den letzten Buchstaben klickst. Das markierte kannst du direkt als Pfad kopieren.

Du kannst die einzelnen BAT-Dateien mit passender Benennung "Sony-Dump", "Drohne-Dump" etc. auch auf den Desktop legen und die Clips darauf ziehen.

Bitte mit leerem Testordner (neu anlegen) probieren.

0

Ich würde es so lösen:

1) Windows Explorer → SendTo in Adresszeile

2) In dem sich öffnenden Ordner test.bat anlegen, mit folgendem Inhalt:

md .\Dump
copy %1 .\Dump
del %1

3) Kontextmenü einer beliebigen Datei Öffnen → Senden an → test.bat

Du kannst / solltest zum Testen zuvor eine Sicherung der Datei erstellen.

Woher ich das weiß:Berufserfahrung – Programmierer
Sven8219 
Fragesteller
 11.09.2022, 15:23

Danke für deinen Code. Hab ihn mal getetste. Was passiert, in dem Ordner, in dem die batch Datei ist, wird der Unterordner \Dump angelegt, der leer ist.

Ich hab es aber nicht mit SendTo probiert sonden eben mit Touch Portal. Das ist eine am Tablet installierte externe App zum Steuern bzw. ausfüheren von Dateien am PC.

0
Erzesel  11.09.2022, 16:40

...aber weshalb der Eiertanz mit den relativen Pfaden . der Explorer übergibt immer (markierte) Dateien als volle Pfade in "Quotes".

ergo ist es völlig irrelevant wo sich di Batch befindet. Sie muss nur die Pfadkomponente der übergbenen Dateien auswerten. %~dp1

md "%~dp1Dump\" 2>nul
move "%~f1" "%~dp1Dump\"
0
Suboptimierer  11.09.2022, 17:25
@Erzesel

Ich finde deinen Code weitaus intransparenter und du hast auch nur eine Zeile weniger, weil du direkt move anstelle von copy und delete verwendest.

Auch sehe ich den Nachteil der Verwendung relativer Pfade nicht. Die Datei liegt in einem Pfad und relativ dazu soll ein Unterordner erstell werden und die Datei in diesen Unterordner verschoben werden.

0