2017-12-27 9 views
1

Nach Check if a file exists in zip archive habe ich eine Batch-Datei, die einige Dateien in einem Verzeichnis verarbeitet, und ich verwende diese Zeile im Innern:Batch-Datei funktioniert auf meinem Desktop, aber nicht auf dem virtuellen Desktop. Warum?

call zipjs.bat list -source "C:\myZip.zip" -flat yes|find /i "filename" && (
    echo file exists 
    color 
)|| (
    echo file does not exist 
) 

I zipjs.bat im selben Verzeichnis wie meine Batch-Datei habe:

Desktop-> mybatch.bat

Desktop-> zipjs.bat

MyBatch.bat ruft zipjs.bat auf und funktioniert wie erwartet auf meinem Computer.

Problem:

ich einen Zugang zu einer virtuellen Maschine bekommen habe meinen Code zu testen, es ist ein Windows-Desktop mit einiger Software darauf läuft. Nichts Außergewöhnliches. Dort stelle ich auch myBatch.bat und zipjs.bat unter das gleiche Verzeichnis (Desktop). Jedoch, wenn ich myBatch ausführen, wird es aufgefordert, dass "zipjs.bat ist kein anerkannter Befehl". Es ist wie myBatch kann zipjs.bat nicht finden. Was könnte das Problem sein?

+0

kann es sein, dass ein Pfad benötigt wird? – Lexib0y

+0

@ Lexib0y hmmm, warum würde es ohne einen Pfad auf meinem Desktop funktionieren? –

+0

Ich meinte die Pfadumgebungsvariable, ist das das gleiche auf beiden Desktop als VM? Sie können aber auch versuchen, es in die Batch-Datei selbst einzufügen. Sofern Sie es nicht über die Eingabeaufforderung in diesem Verzeichnis ausführen oder das Arbeitsverzeichnis in der Verknüpfung festgelegt haben, die die Stapeldatei ausführt, benötigen Sie eine Pfadumgebungsvariable. (Ihr Desktop befindet sich standardmäßig nicht im Pfad, und Sie können auch nicht sicher sein, dass es das Arbeitsverzeichnis ist) – Lexib0y

Antwort

2

Wenn der bat mit Admin-Rechten gestartet wird, wird er im Ordner system32 gestartet. Versuchen Sie am Anfang der Datei cd /d "%~dp0" einzustellen (der Befehl cd ändert das Arbeitsverzeichnis und der Schalter /d ist für den Fall, dass zwischen verschiedenen Laufwerken gesprungen werden muss).

Das %0 Argument ist die die Batch-Datei selbst (falls der shift Befehl nicht verwendet wird), so mit %~dp0 Sie das Laufwerk und path to the file (ohne die Dateinamen) erhalten.

+1

Auch erwähnenswert, dass @Mofi erwähnt, mit '" call% ~ dp0zipjs.bat "' anstatt nur 'call zipjs.bat' zu verwenden, funktioniert auch –

Verwandte Themen