2017-02-15 5 views
0

Ich habe ein Windows-Skript, das alle meine Unterordner durchläuft, um nach jeder gefundenen ZIP-Datei zu suchen, und ihre absoluten Pfade in eine Bat-Datei schreibt.Zeichenfolge am Anfang einer generierten Datei hinzufügen

dir /b /s /-p *.zip /o:n | findstr /E .zip >"%CD%"\listFichierZip.bat 

Ich möchte jetzt jede Zeile in eine MOVE-Funktion ändern.

  1. hinzufügen MOVE vor jedem Pfad
  2. am Ende jedes Pfades den Zielordner anhängen

ich einige Probleme gestoßen sind, versuchen, die „MOVE“ Zeichenfolge vor dem findstr Funktion hinzuzufügen. Ich weiß, wie man Strings, Variablen, aber Funktion zurückgibt, ich nicht.

Ich habe einige Threads gefunden, die diese Frage auf StackOverflow stellen, aber alle waren über Unix, leider.

Antwort

1
@echo off 
    setlocal enableextensions disabledelayedexpansion 

    > "moveFichierZip.bat" (
     for /r %%a in ("*.zip") do echo move "%%~fa" "x:\somewhere" 
    ) 

einen rekursive for Befehl Verwenden Sie all .zip Dateien zu suchen und für jeden einzelnen echo die move Text von der Datei mit vollständigem Pfad gefolgt (%%~fa) und dem Zielordner.

Die gesamte Ausgabe wird zur endgültigen Zieldatei umgeleitet.

Um dies direkt von der Kommandozeile ausführen,

>"moveFichierZip.bat" (for /r %a in ("*.zip") do @echo move "%~fa" "x:\somewhere") 
+0

@Gloups Beachten Sie, dass wenn Sie wirklich nur die ZIP-Dateien verschieben möchten, Sie den Schritt des Erstellens der 'moveFilchierZip.bat'-Datei überspringen können und einfach die Batch-Datei die Dateien direkt verschieben lassen:' for/r %% a in ("* .zip") verschiebe "%% ~ fa" "x: \ somewhere" ' –

-1

Ihre beste Option ist es, busybox.exe zu installieren und alle relevanten Unix-Text-Tools in einer ausführbaren Datei zu erhalten. Dann werden Sie können

find . -name *.zip -print | xargs -i echo MOVE "{}" DestDir > "$CD"/listFichierZip.bat 

und das wird es sein. Führen Sie einige Kontrollen vor listFichierZip.bat Ausführen ...

+0

verwenden * ich einige Threads diese Frage auf Stackoverflow gefunden, aber alles über Unix war, leider. * –

+1

Ihr Verständnis des zitierte Satzes von OP „ist I will keine Unix-Lösungen ". Mein Verständnis ist "Ich kann nicht Unix-Lösungen verwenden". Ich denke, es ist hilfreich, ihnen zu zeigen, wie diese Unix-Lösungen unter Windows verwendet werden können (nützlich auch für andere Zeiten, da sie üblich sind, während in solchen Fällen fast niemand 'cmd' verwendet). Ich fügte meine Antwort _exactly_ hinzu, weil ich den von Ihnen zitierten Satz gelesen hatte. Das heißt, wir unterscheiden uns, und ich danke Ihnen sehr für die Motivation Ihres Downvote. Ich wünschte, jeder Downvoter würde das tun, was uns unterscheidet, wäre für alle viel klarer. – Dario

+0

Donevote ** ohne ** Kommentar '==' ** meine Jungs **. Dann, wenn das Tag 'cmd' ist, möchte der Benutzer die Lösung auf diesem Weg, ** aber ** Sie bieten ihm an,' busybox.exe' zu ​​installieren, das ist ein anderes ** Problem ** sonst, für ihn/sie. in der Erwägung, dass er/sie ** cmd ** nicht benutzen kann, glaubst du, er/sie kann ** bash ** ?. Ich bin froh, dass Sie nicht verrückt geworden sind :) –

Verwandte Themen