Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/batch-file/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 批量插入文本,同时保留数字_Batch File - Fatal编程技术网

Batch file 批量插入文本,同时保留数字

Batch file 批量插入文本,同时保留数字,batch-file,Batch File,我有一个使用Stephans for loop得到结果的代码谢谢,但我仍然有下面解释的问题 原文: bbox 7 25 6 04 新案文: first.one 7 second.two 25 third.three 6 fourth.four 04 下面是一段代码,我曾尝试用bbox捕获行,然后错过它们(作为测试),但它总是显示它们如果我能让它工作,我还需要一段代码来返回完整的行(未修改),如果bbox为false @echo off for /f "tokens=1-20" %%a in

我有一个使用Stephans for loop得到结果的代码谢谢,但我仍然有下面解释的问题

原文:

bbox 7 25 6 04
新案文:

first.one 7
second.two 25
third.three 6
fourth.four 04
下面是一段代码,我曾尝试用bbox捕获行,然后错过它们(作为测试),但它总是显示它们如果我能让它工作,我还需要一段代码来返回完整的行(未修改),如果bbox为false

@echo off
for /f "tokens=1-20" %%a in (input.txt) do (
echo findstr "bbox" "%%a"
if errorlevel=1 (
echo. >> output.txt
) else (
echo %%a >> output.txt
))
pause

for/f的
循环通常会忽略空行。因此,我们必须确保没有空行(
find/n/v”“file.txt
在每行前面加上行号) 其余的都是直截了当的:

@echo off
(
for /f "tokens=1,* delims=[]" %%x in ('find /n /v "" asuka.txt') do (
  title woking on line nr %%x
  for /f "tokens=1-6,*" %%a in ("@ %%y") do (
    if "%%b"=="bbox" (
      echo  first.one   %%c
      echo  second.two  %%d
      echo  third.three %%e
      echo  fourth.four %%f
      REM lines above: between 'echo' and text, there are a space and a TAB
      REM lines above: and a TAB between text and '%%?' 
    ) else echo/%%y
  )
))>asuka.new

我最终通过修改你的代码破解了它,谢谢Stephan的帮助。我的项目比bboxes要大一点这里是完整的代码:

@echo off
setlocal enabledelayedexpansion
set tab=    
(
for /f "tokens=* delims=[]" %%a in (input.txt) do (
  for /f "tokens=1-15" %%b in ("%%a") do (

set attack=false
set atknum=0

    if "%%b"=="attack" (
    set attack=true
    set atknum=1
    ) else if "%%b"=="attack2" (
    set attack=true
    set atknum=2
    ) else if "%%b"=="attack3" (
    set attack=true
    set atknum=3
    ) else if "%%b"=="attack4" (
    set attack=true
    set atknum=4
    ) else if "%%b"=="attack5" (
    set attack=true
    set atknum=5
    ) else if "%%b"=="attack6" (
    set attack=true
    set atknum=6
    ) else if "%%b"=="attack7" (
    set attack=true
    set atknum=7
    ) else if "%%b"=="attack8" (
    set attack=true
    set atknum=8
    ) else if "%%b"=="attack9" (
    set attack=true
    set atknum=9
    )

    if "%%b"=="bbox" (
    echo %tab% bbox.position.x %%c
    echo %tab% bbox.position.y %%d
    echo %tab% bbox.size.x %%e
    echo %tab% bbox.size.y %%f
    ) else if "!attack!"=="true" (
    if "%%e"=="0" (
        echo %tab% attack.damage.type !atknum!
        echo %tab% attack.size.x 0
        ) else (
    echo %tab% attack.damage.type !atknum!
    echo %tab% attack.position.x %%c
    echo %tab% attack.position.y %%d
    echo %tab% attack.size.x %%e
    echo %tab% attack.size.y %%f
    echo %tab% attack.damage.force %%g
    echo %tab% attack.reaction.fall.force %%h
    echo %tab% attack.block.penetrate %%i
    echo %tab% attack.effect.hit.flash.disable %%j
    echo %tab% attack.reaction.pause.time %%k
    echo %tab% attack.reaction.fall.velocity.y 2
    echo %tab% attack.reaction.fall.velocity.x 2
            )
    ) else if "%%b"=="hitflash" (
    echo %tab% attack.effect.hit.flash.model %%c
    ) else if "%%b"=="hitfx" (
    echo %tab% attack.effect.hit.flash.sound %%c
    ) else if "%%b"=="damageonlanding" (
    echo %tab% attack.damage.land.force %%c
    echo %tab% attack.damage.land.mode %%d
    ) else if "%%b"=="dropv" (
    echo %tab% attack.reaction.fall.velocity.y %%c
    echo %tab% attack.reaction.fall.velocity.x %%d
    ) else if "%%b"=="anim" (
    echo.
    echo %%a
    ) else  echo %%a
    ))) >output.txt

您要搜索的模式是什么?你能提供一个被搜索的文件内容的样本吗?而不仅仅是匹配的行。“请求”是错误的。堆栈溢出不是免费的代码编写服务。请显示批处理文件,您需要帮助。它是做什么的,与它应该做的有何不同?从以下命令开始:
for/f“tokens=2-5”%a in(“bbox 7 25 6 04”)do@echo%a,%b,%c,%d
(注意,这是命令行语法。如果在批处理文件中使用它,则将每个标记加倍:
%a
%a
等)@malik,我昨天要求提供一个文件内容示例,以确定如何最好地为字符串匹配制定正则表达式模式。如果你能抽出时间,我将不胜感激。同时,在命令提示下尝试输入,
FindStr/?
,站起来读一读。谢谢你的帮助,但这段代码只是用原始格式的所有BBox创建了原始文件的精确副本。尝试了一个带有计数器的嵌套for循环,所以复制了同一行,但它不起作用@echo off set line=0(for/f“tokens=1-15”%%b in(input.txt)do(如果“%%b”,则设置line+=1)==“bbox”(echo%%b)else(在(input.txt)do中为/f“令牌=*”%%a设置cline=0(如果“%line%”=%cline%”(echo%%a))>output.txt pausesorry与变量混淆,则设置cline+=1。请尝试编辑过的代码。我真的很想支持拖放,但是每当我在第一个循环输入文件中使用%1、%~1或%*时,我在output.txt中得到的都是我刚刚删除的文件的位置,其他任何人都帮不上忙。