batch-file - 有没有办法提取 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
解决方案
不要依赖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
了它在前面添加了一个冒号以确保该行不为空。
结论
不要在文件中添加冒号。
推荐阅读
- php - 验证在我的注册码 php 中不起作用
- node.js - 如何从 Three.js 中的欧拉中获取原始旋转四元数
- windows - 无法在我的 Azure Windows-10 VM 上使用域/本地用户进行身份验证
- python - 将两个列表相乘
- excel - 如何在excel中制作图表组合具有相同名称的值
- javascript - javascript中多个输入的一个输出
- xml - QDomEntity VS QDomElement| **QDomElement** 和 **QDomEntity** 有什么区别?
- delphi - Delphi ZXING 在 Windows 中使用网络摄像头总是出错
- php - 无法在我的自定义 wordpress 主题中使用 smarty 模板引擎
- bash - 用于从 csv 文件中提取值大于参数中指定的条目的 bash 脚本