【问题标题】:Searching and executing from a specific line in a file从文件中的特定行搜索和执行
【发布时间】:2014-12-18 14:17:06
【问题描述】:

我有一个文件 PublicHolidays.txt,下面是内容(一行中的一个 html 脚本)。视窗 7

A.html
B.html
C.html
D.html

如果用户输入 B.html(忽略大小写),那么我的批处理文件应该从 B.html 开始执行,直到文件结束,即 D.html

我推荐了这篇文章,但它似乎不是 help

概述:我需要编写一个批处理作业来执行 txt 文件中指定的所有内容或获取用户输入并从该行执行命令(基本上是第一次在文件中搜索该字符串并从该行开始执行)。

@echo OFF
Echo **********************************************************************
@setlocal enableextensions enabledelayedexpansion    
 SET TOTAL=0
 FOR /F "usebackq tokens=*" %%I IN (PublicHolidays.txt) do (
SET LN=%%I
FOR %%J IN ("!LN!") do (
    FOR /F %%K IN ('ECHO %%J ^| FIND /I /C ".html"') DO (
        @SET /A TOTAL=!TOTAL!+%%K
    )
)
 )

setLocal EnableDelayedExpansion

ECHO *************Total !TOTAL! *************
Echo.

SET /p ScriptName=Please enter the Script Name :
IF [%ScriptName%] EQU [] GOTO ScriptName

for /f "tokens=%ScriptName% skip=%line% delims=," %%j in (PublicHolidays.txt) do (
setlocal enabledelayedexpansion
CALL specificCmd -s -i %ScriptName% >> outout.txt
 )
Pause

【问题讨论】:

    标签: batch-file command-line-arguments command-prompt batch-processing


    【解决方案1】:
    @ECHO OFF
    SETLOCAL
    SET /p ScriptName=Please enter the Script Name :
    
    for /f "tokens=1*delims=." %%j in (q26519180.txt) do (
     IF /i "%scriptname%"=="%%j" SET "scriptname=" 
     IF NOT DEFINED scriptname ECHO(call specificCmd -s -i %%j.%%k
     )
    GOTO :EOF
    

    这应该适合你。

    我使用了一个名为 q26519180.txt 的文件,其中包含我的测试数据。

    所需的命令只是ECHOed 用于测试目的。 验证命令正确后,将ECHO(call 更改为call 以实际执行文件处理。

    还请注意,我已删除重定向以使我的测试更容易。

    【讨论】:

    • 感谢@Magoo,但它的部分工作。如果指定了分隔符,则它会失败,即如果文件的内容(PublicHoliday.txt)是 A B C D 那么它可以工作。
    • 我刚刚修改为 IF /i "%scriptname%"=="%%j.%%k" SET "scriptname=" 它工作正常......干杯!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-18
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    • 2017-08-15
    • 1970-01-01
    相关资源
    最近更新 更多