@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
** Eu coloquei o código acima no test.bat e passei abaixo do parâmetro mencionado
C: \ Users \ ak813708> C: \ Users \ abhay \ Desktop \ test1.bat
C: \ Users \ abhay \ Desktop \ doc1.zip C: \ Users \ abhay \ Desktop \ header.txt, mas independentemente do seu primeiro arquivo de parâmetro digite sua função de chamada2. **
windows
command-line
batch
batch-file
abhayk
fonte
fonte
%~x1
- Expandir%1
para um arquivo somentefor /?
dirá o que% ~ xI faz.Respostas:
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 arquivos e como usá-los, useFOR /?
na linha de comando - está no final da seção.Algo como o abaixo deve fornecer um código mais previsível, que oferece um pouco de flexibilidade na maneira como você aceita nomes de arquivos de linha de comando.
fonte
if
erro que você está começando agora ...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 apenas%1
para um arquivo de extensão.Então você pode usar algo como:
Leitura adicional
fonte
Modifiquei meu lote para este fim ... Agora, tanto o servidor remoto quanto os caminhos da área de trabalho local estão sendo processados e a instrução IF está funcionando perfeitamente
fonte
goto :eof
resolve isso. A melhor solução seria a dereturn
um código, uma vez que você chamar a função (call : sub
e, em seguida, ter um imediatoEXIT /b
.