繁体   English   中英

将.txt中的值传递给HTML文本框(使用Batch,Java或PHP)

[英]Pass a value from .txt to a HTML textbox (using Batch, Java, or PHP)

复杂的问题让我试着解释....

我有一个文本文件(名为filelist.txt),其中包含一系列值,如下所示:

12_23_4_ABC_|
12_35_6_XYZ_|
12_36_5_ABC_|
12_37_9_UVW_|
12_38_8_XYZ_|
12_39_1_ABC_|

(pipe ( | ) is the delimiter)

我有一个HTML页面(名为ABCparser.html),它有一个文本框,我可以在其中键入值然后点击“提交”,但是这个特定的页面只接受前缀_ABC_的值(还有另一个接受_XYZ_ HTML页面和_UVW_ ),而不是我每次在每个页面上对value = ""部分中的前缀值进行硬编码,有没有办法从文本文件(.txt)中捕获它并将其传递给HTML页面? 我已经在页面上有一个JavaScript函数来自动点击“提交”按钮。 如果可能的话,我更愿意在批处理中执行此操作,因为我的主程序是用它编写的,或者如果有人可以帮我提供Java或者甚至PHP,我可以从Batch调用它。

文本框代码:

<input type="text" name="trackingId" size="100" value = "">

虽然有一个问题。 我需要将清理过的数据传递给HTML文本框....

所以目标:

  • 解析文本文件并查找具有_ABC_
  • 如果line为false,请转到文本文件中的下一行(参见第5个项目符号),如果line为true,则将值加到第三个下划线并捕获它以传递给HTML文本框,但是将前面的下划线转换为破折号并分隔值用逗号。
  • 因此,文本框代码应该与上述示例一样:
    • <input type="text" name="trackingId" size="100" value = "12-23-4, 12-36-5, 12-39-1">
  • JavaScript函数自动提交,成功进行了Web服务调用。
  • 如果行_XYZ_执行相同的步骤但将其发送到“XYZparser.html”,如果行_UVW_将其发送到“UVWparser.html”
  • 用户可以随时更改filelist.txt中的数字,但后缀将保持不变(即:在以后的运行中,用户可能不想提交12_23_4_ABC_,他们可能希望看到13_87_1_ABC_)
@ECHO OFF
SETLOCAL enabledelayedexpansion
FOR /f "delims==" %%i IN ('set val 2^>nul') DO (SET %%i=)
FOR /f "tokens=1-4delims=_" %%a IN (filelist.txt) DO (
SET val_%%d=!val_%%d!, %%a-%%b-%%c
)
FOR /f "tokens=2,3delims=_=" %%i IN ('set val 2^>nul') DO (
SET list=%%j
SET list=!list:~2!
>%%iparser.html ECHO ^<input type="text" name="trackingId" size="100" value = "!list!"^>
ECHO generated %%i parser
)

五分钟的任务。 首先清除名为VAL *的任何环境变量,获取列表并在变量val_prefix为VALUE数据构建字符串

处理完文本文件后,在环境中查找VAR *,抓取下划线后面的部分以便在输出文件名中使用,删除数据项的前两个字符,这将是逗号空格并生成行到文件。 报告HTML文件的生成 - 可用于触发需要触发的任何内容。

花费更长时间来记录而不是编程......


修订后的规范修正案

 @ECHO OFF SETLOCAL enabledelayedexpansion FOR /f "delims==" %%i IN ('set val 2^>nul') DO (SET %%i=) FOR /f "tokens=1-5delims=_|" %%a IN (filelist.txt) DO ( IF "%%e"=="" (SET val_%%d=!val_%%d!, %%a-%%b-%%c) ELSE ( SET val_%%d_%%e=!val_%%d_%%e!, %%a-%%b-%%c) ) FOR /f "tokens=1,2delims==" %%i IN ('set val 2^>nul') DO ( SET html=%%i SET html=!html:*_=!parser.html SET list=%%j SET list=!list:~2! >!html! ECHO ^<input type="text" name="trackingId" size="100" value = "!list!"^> ECHO generated !html! ) 

几乎与OP的版本相同。 %%e设置的细微差别,但这是风格问题。

更简单的生成HTML文件的方法 - 有点偷偷摸摸。 FOR只是从名称中拆分名称。 处理名称,它将采用val_something格式,因此将其应用于变量(字符串操作不能直接在元变量上执行)然后!html:*_=! 将采取var_something并改变所有的字符直到并包括第一_ (中之间的字符或字符串*=到之后的字符) = -在这种情况下是没有的,所以导致..._被删除(好吧,好吧,因为我们知道所有var..变量都会启动var_我们可以很容易地使用!html:~4! - 一般与特定技术的关系)

那么 - 是否在parser.html添加parser.html是一个选择问题。

......只是有关方面的另一种方法问题......

彼得的回答真的有帮助! 我确实根据一些其他用例做了一些修改。 这是我的答案....

@ECHO ON
SETLOCAL enabledelayedexpansion
FOR /f "delims==" %%i IN ('set val 2^>nul') DO (SET %%i=)
FOR /f "tokens=1-5delims=_" %%a IN (filelist.txt) DO (
    IF "%%e"=="|" (
        SET val_%%d=!val_%%d!, %%a-%%b-%%c
    )   ELSE (
        SET val_%%d_%%e=!val_%%d_%%e!, %%a-%%b-%%c
    )
)

FOR /f "tokens=2-4delims=_=" %%i IN ('set val 2^>nul') DO (
    IF "%%k"=="" (
        SET list=%%j
        SET list=!list:~2!
        >%%i_parser.html ECHO ^<input type="text" name="trackingId" size="100" value = "!list!"^>
        ECHO generated %%i parser
    )   ELSE (   
        SET list=%%k
        SET list=!list:~2!
        >%%i_%%j_parser.html ECHO ^<input type="text" name="trackingId" size="100" value = "!list!"^>
        ECHO generated %%i_%%j parser
    )
)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM