我有一个要求,我的文件以: - 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条件来运行基于文件名的循环吗?
答案 0 :(得分:0)
我不知道你在做什么。
始终使用完整路径。特别是如果你想寻求帮助。
for %A in (c:\input\um*.* c:\input\m*.*) do echo %A
答案 1 :(得分:0)
删除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!