Batch file 从文本文件中提取字符串并使用该文本重命名文件。对于/楼?熟食店?

Batch file 从文本文件中提取字符串并使用该文本重命名文件。对于/楼?熟食店?,batch-file,for-loop,Batch File,For Loop,你好,我在这里有点不知所措,所以问题就来了。我试着阅读过去的文章,但由于我的不熟悉,我无法将其他解决方案应用到我的文章中。我也没有适当的代码,但我希望,因为我的问题似乎很简单,也许有人可以帮助我或指导我。多谢各位 我有一个程序,可以将EDI数据导出到一个名为FOUT_R.EDI的文件中,我需要一个批处理脚本来查看该文件,从第4行的值3和第7行的值3中提取字符串,然后使用组合值重命名该文件。这些值以星号分隔。下面是一个例子 ISA*00* *00* *ZZ*JK

你好,我在这里有点不知所措,所以问题就来了。我试着阅读过去的文章,但由于我的不熟悉,我无法将其他解决方案应用到我的文章中。我也没有适当的代码,但我希望,因为我的问题似乎很简单,也许有人可以帮助我或指导我。多谢各位

我有一个程序,可以将EDI数据导出到一个名为FOUT_R.EDI的文件中,我需要一个批处理脚本来查看该文件,从第4行的值3和第7行的值3中提取字符串,然后使用组合值重命名该文件。这些值以星号分隔。下面是一个例子

ISA*00*          *00*          *ZZ*JK60           *ZZ*     MFG *:
GS*IN*JK60*     MFG*20170223*1531*1*X*004010
ST*810*0001
BIG*20170223*237454
CUR*SE*CAD
REF*SI*238972
N1*ST*VEHICULOS COMERCIALES MEXICO S.A. DE C.V*92*065
N1*SU*METAL*92*JK60
DTM*011*20170223
因此,最后我希望文件名为
“237454 VEHICULOS COMERCIALES MEXICO S.A.DE C.V.edi”

(.edi是文件扩展名)。同样,我也不确定我在做什么,我的初学者脚本是这样的

for /f "delims=*" %%fname1 IN (FOUT_R.edi) DO ren FOUT_R.edi %%fname1.edi
但这显然是错误的,这对我来说只是一个出发点,但我现在意识到这不属于我的范围

有没有人能帮我或指导我去一个网站,在那里最没有经验的编剧可以用婴儿步骤来解释

多谢各位

@echo off
setlocal

set "filename=FOUT_R.edi"

for /F "skip=3 tokens=3 delims=*" %%a in (%filename%) do set "Line4value3=%%a" & goto break1
:break1

for /F "skip=6 tokens=3 delims=*" %%a in (%filename%) do set "Line7value3=%%a" & goto break2
:break2

ren %filename% %Line4value3%%Line7value3%.edi
对不起,没有解释;自己查找:打开命令提示符会话并键入命令,后跟
/?


请注意,如果文件名可能包含空格,则必须用引号括起来。

如果第7行中的名称不包含冒号,则应执行以下操作:

@Echo off&SetLocal EnableExtensions EnableDelayedExpansion
set "FileName=FOUT_R.edi"
set "NewName="
for /f "tokens=4 delims=:*" %%A in (
  'findstr /N "^" "%FileName%" ^|findstr "^4: ^7:"'
) Do Set "NewName=!NewName! %%A"
Echo Ren "%FileName%" "%NewName:~1%.edi"
timeout -1

如果输出看起来正常,请删除回声

,谢谢回复!我无法让它工作,它一直给我一个语法错误。我试图删除set“filename=FOUT\u R.edi”中的方括号,但没有任何帮助,然后我将它们放在set filename=“FOUT\u R.edi”上,这允许脚本运行,但它只是调用了文件“.edi”,没有方括号,所以基本上没有文件名。不确定如何使其工作。您必须将
ren
命令更改为
ren“%filename%”%Line4value3%%Line7value3%.edi“