@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

** Я поместил код выше в test.bat и передал ниже упомянутый параметр

C:\Users\ak813708> C:\Users\ Абхай \ Desktop \ test1.bat
C:\Users\ abhay \ Desktop \ doc1.zip C:\Users\ abhay \ Desktop \ header.txt, но независимо от типа файла его первого параметра, вызывающая функция2.**

3 ответа3

1

Как я могу получить расширение файла с параметром командной строки?

Вы можете получить расширение файла, используя:

%~x1 - развернуть %1 до файла eXtension.

Таким образом, вы можете использовать что-то вроде:

SET Extension=%~x1

...

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

дальнейшее чтение

1

Поэтому я бы посоветовал вам использовать оператор %~dp , а не только оператор %~p . Для получения полного списка файловых операторов и их использования используйте FOR /? в командной строке - это в самом конце раздела.

Нечто подобное приведенному ниже должно предоставить вам более предсказуемый код, который обеспечивает небольшую гибкость в том, как вы принимаете имена файлов командной строки.

@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
0
@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

Я изменил свою партию, как это ... Теперь обрабатываются как пути к удаленному серверу, так и к локальным рабочим столам, а оператор IF работает отлично

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .