我对我的文件开头有要求:-M8585858和UM966696。我已经写了一段代码,使用如下所示的for循环读取这些文件:-
cd C:\Input\
echo M files ..........
for %%f in (M*.*) do (
rem echo %%~nfAPSI
set v=%%~nfAPSI
)
echo %v%
echo UM files ..........
for %%f in (UM*.*) do (
set v=%%~nfAPSI
)
set "v=%v:~1%"
echo %v%
cd D:\usr\src\IN\
cd
echo Directory changed
echo File in the input directory
timeout 5
echo Enumerating files before copy..
dir C:\In
java.exe -jar C:\abc.jar -rc4 -crypt C:\Input\ C:\Output\ %v%
Echo Enumerating files after copy.....
dir C:\Out
echo End Of Batch File Execution
但是现在发生的事情是,每当将具有M966696的文件放入输入文件夹C:\ Input \时,批处理文件就会删除第一个字符“ M”并以966696进行读取(这是不正确的)。我需要将整个文件名作为公钥发送。因此,基本上我在没有条件的情况下使用一个循环。因此,当涉及到第二个循环时,它将删除第一个字符。因此,理想的解决方法是同时包含M *和UM *相关文件的条件。我尝试使用FINDSTR,但是它不能正常工作,或者我使用的方式不正确-有人可以告诉我如何在循环周围使用if-else条件,以便基于文件名运行循环吗?
您删除UM文件名第一个字符的行在错误的位置。您需要将其移至处理UM文件的for循环内。而且,由于您需要在for
循环内设置和操作变量,因此还需要启用延迟扩展。
setlocal enabledelayedexpansion
cd C:\Input\
echo M files ..........
for %%f in (M*.*) do (
set v=%%~nfAPSI
)
echo !v!
echo UM files ..........
for %%f in (UM*.*) do (
set v=%%~nfAPSI
set "v=!v:~1!"
)
echo !v!
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句