如何从第一个输入参数访问文件夹路径以及如何在批处理文件中调用 IF 循环?

如何从第一个输入参数访问文件夹路径以及如何在批处理文件中调用 IF 循环?
@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\abhay\Desktop\test1.bat
C:\Users\abhay\Desktop\doc1.zip C:\Users\abhay\Desktop\header.txt 但无论其第一个参数文件类型如何,它都会调用函数2。**

答案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

答案2

我如何才能让文件扩展名给出命令行参数?

您可以使用以下方法获取文件扩展名:

%~x1-%1仅扩展到文件扩展名。

因此你可以使用类似如下的方法:

SET Extension=%~x1

...

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

进一步阅读

答案3

@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

我已经修改了我的批处理,如下所示...现在远程服务器和本地桌面路径都正在处理,如果语句运行正常

相关内容