Wie greife ich vom ersten Eingabeparameter aus auf den Ordnerpfad zu und wie rufe ich eine IF-Schleife in einer Batchdatei auf?

Wie greife ich vom ersten Eingabeparameter aus auf den Ordnerpfad zu und wie rufe ich eine IF-Schleife in einer Batchdatei auf?
@Echo OFF

SET FilePath=%1

SET HeaderFilePath=%2

SET RetrunCode="0"

Call :sub %FilePath% exit /b

:sub SET FileName=%~n1


SET FilePath=%1

SET "FileType=.zip"

CALL SET "ZipType=%%FilePath:%FileType%=%%"

if "%Ext%"==".zip" (goto Function1) else Goto Function2

:Function1
 Echo  File is zipped

:Function2 
Echo File is not zipped

pause

**Ich habe den obigen Code in test.bat eingefügt und den unten genannten Parameter übergeben

C:\Benutzer\ak813708>C:\Benutzer\abhay\Desktop\test1.bat
C:\Benutzer\abhay\Desktop\doc1.zip C:\Benutzer\abhay\Desktop\header.txt, aber unabhängig von seinem ersten Parameterdateityp ruft es Funktion 2 auf.**

Antwort1

Ich möchte Sie daher ermutigen, den %~dpOperator zu verwenden, und nicht nur den %~pOperator. Eine vollständige Liste der Dateioperatoren und ihrer Verwendung finden Sie FOR /?in der Befehlszeile – ganz am Ende des Abschnitts.

Etwas wie das Folgende sollte Ihnen einen vorhersehbareren Code liefern, der Ihnen ein wenig Flexibilität bei der Annahme von Befehlszeilendateinamen bietet.

@Echo OFF
SET File=%1
SET HeaderFilePath=%2
SET RetrunCode="0"
Call :sub %File%
exit /b

:sub 
SET FileName=%~n1
SET Ext=%~x1
SET PGPProcessPath=%~dp1
SET EncryptFile=%~fnx1
SET DecryptFile=%EncryptFile:_pgp=%
pause

if "%Ext%"==".zip" (goto Function1) else Goto Function2

Antwort2

Wie kann ich die Dateierweiterung als Befehlszeilenparameter angeben?

Sie können die Dateierweiterung folgendermaßen erhalten:

%~x1%1- Nur zu einer Dateierweiterung erweitern .

Sie können also etwas wie Folgendes verwenden:

SET Extension=%~x1

...

If "%ZipType%"=="%Extension%" (goto Function1) else Goto Function2

Weiterführende Literatur

Antwort3

@Echo OFF
SET File=%1
SET HeaderFilePath=%2
Call :sub %File%
exit /b
:sub 
SET FileName=%~n1
SET Ext=%~x1
SET PGPProcessPath=%~dp1
SET EncryptFile=%~fnx1
SET DecryptFile=%EncryptFile:_pgp=%
Echo extn is %Ext%
if "%Ext%"==".zip" (goto Function1) else Goto Function2
:Function1
echo this is function 1
goto :eof
:Function2
echo this is function2
goto :eof
:eof
Echo Process is completed
pause

Ich habe meinen Batch wie folgt geändert... Jetzt werden sowohl Remote-Server- als auch lokale Desktop-Pfade verarbeitet, und die IF-Anweisung funktioniert einwandfrei

verwandte Informationen