首页 > 解决方案 > 有没有办法提取 TXT 文件并将其转换为批处理文件?

问题描述

我有这个代码:

 @echo off 
 (for /f "tokens=* delims=:" %%L in ('findstr /b ::: "%~f0"') do echo %%L) >list.bat 
:::@echo off
:::echo hello
:::pause

它采用简单的“hello”脚本并将其转换为一个名为list.bat的批处理文件。问题是我每次都需要把代码放在那里。但是,我想提取其中包含该代码的文件,例如,我有list.txt,我想从中提取代码。我尝试过的方式如下,我不知道发生了什么。它说

系统找不到指定的驱动器

对于list.txt中的每一行代码

当我放在%%secho之前时,它会在list.txt中显示我的所有代码行。

我错过了什么?

@echo off 
(for /f "tokens=* delims=:" %%l in ('findstr /b ::: "%~f0"') do echo %%l) >list.bat 
for /f "tokens=*" %%s in (list.txt) do (
   %%s
)
pause

List.txt 看起来像这样:

:::@echo off
:::echo hello
:::pause

将要创建的文件 (list.bat) 如下所示:

@echo off
echo hello
pause

标签: batch-file

解决方案


不要依赖delims删除前导冒号,因为它们中的任何数量都会被剥离:

@echo off
>list.bat (FOR /F delims^=^ eol^= %%L in ('""%__APPDIR__%FINDSTR.EXE" /BN ":::" "List.txt""') do (
    set "line=%%L"
    SETLOCAL EnableDelayedExpansion
    echo(!line:*::::=!
    ENDLOCAL
))

有 4 个冒号::::,因为我使用FINDSTR了它在前面添加了一个冒号以确保该行不为空。


结论

不要在文件中添加冒号。


推荐阅读