@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
**Coloquei o código acima em test.bat e passei o parâmetro mencionado abaixo
C:\Users\ak813708>C:\Users\abhay\Desktop\test1.bat
C:\Users\abhay\Desktop\doc1.zip C:\Users\abhay\Desktop\header.txt mas independentemente de seu primeiro arquivo de parâmetro digite sua função de chamada2.**
Responder1
Então, eu encorajo você a usar o %~dp
operador, em vez de apenas o %~p
operador. Para obter uma lista completa dos operadores de arquivo e como usá-los, use FOR /?
na linha de comando - está no final da seção.
Algo como o abaixo deve fornecer um código mais previsível que fornece um pouco de flexibilidade na forma como você aceita nomes de arquivos de linha de comando.
@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
Responder2
Como posso obter a extensão do arquivo com um parâmetro de linha de comando?
Você pode obter a extensão do arquivo usando:
%~x1
- Expanda %1
apenas para uma extensão de arquivo.
Então você pode usar algo como:
SET Extension=%~x1
...
If "%ZipType%"=="%Extension%" (goto Function1) else Goto Function2
Leitura adicional
- Argumentos de linha de comando (parâmetros)
- Um índice AZ da linha de comando do Windows CMD- Uma excelente referência para todas as coisas relacionadas à linha cmd do Windows.
Responder3
@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
Eu modifiquei meu lote assim ... Agora, tanto o servidor remoto quanto os caminhos da área de trabalho local também estão sendo processados. A instrução IF está funcionando perfeitamente