¿Cómo acceder a la ruta de la carpeta desde el primer parámetro de entrada y cómo llamar a IF Loop en un archivo por lotes?

¿Cómo acceder a la ruta de la carpeta desde el primer parámetro de entrada y cómo llamar a IF Loop en un archivo por lotes?
@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

** Coloqué el código anterior en test.bat y pasé el parámetro mencionado a continuación.

C:\Users\ak813708>C:\Users\abhay\Desktop\test1.bat
C:\Users\abhay\Desktop\doc1.zip C:\Users\abhay\Desktop\header.txt pero independientemente de su primer archivo de parámetros escriba su función de llamada2.**

Respuesta1

Por lo tanto, le recomiendo que utilice el %~dpoperador, en lugar de solo el %~poperador. Para obtener una lista completa de los operadores de archivos y cómo usarlos, use FOR /?en la línea de comando; se encuentra al final de la sección.

Algo como lo siguiente debería proporcionarle un código más predecible que proporcione un poco de flexibilidad en la forma de aceptar nombres de archivos de línea de comandos.

@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

Respuesta2

¿Cómo puedo obtener la extensión del archivo y dar un parámetro de línea de comando?

Puede obtener la extensión del archivo usando:

%~x1- Expandir %1solo a una extensión de archivo.

Entonces puedes usar algo como:

SET Extension=%~x1

...

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

Otras lecturas

Respuesta3

@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

He modificado mi lote y es así... Ahora tanto las rutas del servidor remoto como las del escritorio local se están procesando y la declaración IF funciona perfectamente

información relacionada