2016-12-01 2 views
0

Ich habe ein Batch-Skript, das zwei Dateien erstellt. Es macht ein Verzeichnis, um zuerst alles zu setzen. Dann erstellt es eine VBS-Datei, mit der eine andere Batchdatei unsichtbar ausgeführt wird. Dann macht es die Batchdatei, die die .vbs ausführen wird. Ich laufe auf Probleme damit. Hier ist der Code, der die zweite Batchdatei erstellt.Wie durchsuchen Sie Unterordner beim Überschreiben einer Datei im Stapel?

Echo echo Spaghetti ^> C:\Users\*.kys > C:\ProgramData\Kys\injector.bat 

, dass eine Datei injector.bat
Dies ist der Inhalt von injector.bat

echo Spaghetti > C:\Users\*.kys 

Das soll überschrieben werden alle Dateien mit einer .kys Erweiterung im Namen C macht: \ Benutzer Verzeichnis und alle Unterordner und Dateien in ihnen.

Es sagt Echo echo Spaghetti the directory or name is incorrect

+0

Meinst du es heißt "Der Dateiname, der Verzeichnisname oder die Laufwerkslabelsyntax sind falsch."? –

+0

Haben Sie wirklich eine Datei namens * .kys – Compo

Antwort

0

Sie mit einem Befehl mehrere Dateien an verschiedenen Orten nicht schreiben kann. Finden Sie jede Datei und schreibt getrennt:

for /r "c:\users\" %%a in ("*.kys") do echo Spaghetti > "%%a" 
1

Sie nicht (>) Daten, um mehrere Dateien umleiten, damit die Wild-Card-* in *.kys nicht akzeptiert wird.

Sie könnten eine for Schleife verwenden, wie folgt aus:

for %%F in ("C:\Users\*.kys") do echo Spaghetti > "%%~F" 

dies durch die Master-Batch-Datei in injector.bat zu schreiben, verwenden Sie den folgenden Code ein:

echo for %%%%F in ^("C:\Users\*.kys"^) do echo Spaghetti ^> "%%%%~F" > "C:\ProgramData\Kys\injector.bat" 

Beachten Sie, dass dies funktioniert nur, wenn dieser Code nicht innerhalb einer anderen for Schleife ist, die %%F verwendet.

By the way, sind Sie sich bewusst, dass echo text > file.ext tatsächlich schreibt die SPACE vor dem > Zeichen in die Datei file.ext auch? Informationen dazu finden Sie unter this post.

Verwandte Themen