批处理文件中的文件名提取

我对我的文件开头有要求:-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] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

批处理文件-文件名提取

批处理文件以从文件名中删除减号

Windows中的批处理文件名和行数

批处理文件,用于从日志文件中提取文件路径和文件名

批处理文件并使用文件的文件名

批处理文件以根据文件名复制文件

使用批处理文件从字符串(文件名)中提取特定部分

批处理文件在文件名中查找重复模式,然后进行处理

批处理文件,用于获取文件夹中的所有文件名

Windows批处理文件中文件名中包含非ASCII字符的文件

批处理文件;列出目录中的文件,仅列出文件名?

根据文件名中的日期创建批处理文件并移动文件

批处理文件以列出csv中的文件路径和文件名

批处理文件可根据文件名中的字符复制文件并远程执行

窗口批处理文件-无法在指定的文件夹中获取文件名

如何在批处理文件中导入批处理文件名

检查批处理文件中 for 循环内文件名中的空格

批处理文件:从目录中读取文件名并存储在阵列中

ffmpeg /批处理文件:输入格式保留在输出文件名中

使用批处理文件中的msqldump将时间戳记添加到文件名

如何使用批处理文件替换Windows文件名中的单个字符?

带有西班牙重音é的文件名在批处理文件中无法正确显示

批处理文件:删除字符串路径中的文件名

将变量传递给Windows FOR / DO批处理文件中的文件名

在Windows批处理文件的文件名中交换字符

运行批处理文件,忽略文件名中的变量

Windows批处理文件名操作

批处理文件以从 CSV 读取文件名并重命名文件夹中的文件

批处理文件,文本文件中的变量/文件名中带有空格