Batch file 批转义变量

Batch file 批转义变量,batch-file,Batch File,我有一段代码: for /F "tokens=*" %%A in (myfile.txt) do ( echo echo %%A ^>^>myfile.txt>>myfile.bat ) 正如你们中的一些人所看到的,这段代码读取myfile.txt并创建myfile.bat,当打开它时会创建原始myfile.txt的精确副本。当myfile.txt包含特殊字符(如>)时,就会出现问题。如何对%%A变量进行转义 非常感谢您的帮助。我有一个想法:使用Certutil

我有一段代码:

for /F "tokens=*" %%A in (myfile.txt) do (
    echo echo %%A ^>^>myfile.txt>>myfile.bat
)
正如你们中的一些人所看到的,这段代码读取myfile.txt并创建myfile.bat,当打开它时会创建原始myfile.txt的精确副本。当myfile.txt包含特殊字符(如>)时,就会出现问题。如何对%%A变量进行转义


非常感谢您的帮助。

我有一个想法:使用
Certutil
命令对文本文件进行编码,然后像此批处理脚本一样再次生成:

@echo关闭
设置“MyTxtFile=myfile.txt”
对于(%MyTxtFile%)中的%%i,请执行以下操作(
设置“MyBatchFile=%%~ni.bat”
设置“TempFile=%%~ni.B64”
设置“NewFile=%%~ni_uu%%~xi”
)
@对于/f%%i in(“certutil.exe”)如果不存在,请执行“%%~$path:i”(
未找到echo CertUtil.exe。
暂停
退出/b
)
Rem将文本文件编码为临时文件
Certutil-编码“%MyTxtFile%”“%TempFile%”nul 2>&1
(
回声@回声关闭
将“%MyTxtFile%”的标题生成代码回显到“%NewFile%”
echo CERTUTIL-f-解码“%%~f0”“%NewFile%”^>nul 2^>^&1
回波出口
)>%MyBatchFile%
@复制“%MyBatchFile%”/b+“%TempFile%”/b>nul 2>&1
删除“%TempFile%”编号2>&1
超时/T 2/NoBreak>nul和exit
编辑

此代码可以根据您最后的评论生成所需内容
test>>Hello

@echo关闭
标题生成代码“myfile.txt”到“myfile\uux.txt”
CERTUTIL-f-解码“%~f0”我的文件“>nul 2>&1
出口
-----开始证书-----
dGVzdCA+PiBIZWxsbw0KDQo=
-----结束证书-----

我有一个想法:使用
Certutil
命令对文本文件进行编码,然后像批处理脚本一样再次生成它:

@echo关闭
设置“MyTxtFile=myfile.txt”
对于(%MyTxtFile%)中的%%i,请执行以下操作(
设置“MyBatchFile=%%~ni.bat”
设置“TempFile=%%~ni.B64”
设置“NewFile=%%~ni_uu%%~xi”
)
@对于/f%%i in(“certutil.exe”)如果不存在,请执行“%%~$path:i”(
未找到echo CertUtil.exe。
暂停
退出/b
)
Rem将文本文件编码为临时文件
Certutil-编码“%MyTxtFile%”“%TempFile%”nul 2>&1
(
回声@回声关闭
将“%MyTxtFile%”的标题生成代码回显到“%NewFile%”
echo CERTUTIL-f-解码“%%~f0”“%NewFile%”^>nul 2^>^&1
回波出口
)>%MyBatchFile%
@复制“%MyBatchFile%”/b+“%TempFile%”/b>nul 2>&1
删除“%TempFile%”编号2>&1
超时/T 2/NoBreak>nul和exit
编辑

此代码可以根据您最后的评论生成所需内容
test>>Hello

@echo关闭
标题生成代码“myfile.txt”到“myfile\uux.txt”
CERTUTIL-f-解码“%~f0”我的文件“>nul 2>&1
出口
-----开始证书-----
dGVzdCA+PiBIZWxsbw0KDQo=
-----结束证书-----
以下注释代码片段可能会有所帮助(请参阅):

输出

==> .\so\46134196.bat

==> type myfile46134196.bat
echo test^>^>hello >>myfile46134196ou.txt

==> type myfile46134196in.txt
test>>hello

==> type myfile46134196ou.txt
test>>hello

==>
更多资源(必读,不完整):

  • (命令参考)
  • (有用的特殊性)
  • %A
    等特殊页面)
  • (专页)
  • 等特殊页面)
  • ^
    插入符号)
    • 以下注释代码片段可能会有所帮助(请参阅):

      输出

      ==> .\so\46134196.bat
      
      ==> type myfile46134196.bat
      echo test^>^>hello >>myfile46134196ou.txt
      
      ==> type myfile46134196in.txt
      test>>hello
      
      ==> type myfile46134196ou.txt
      test>>hello
      
      ==>
      
      更多资源(必读,不完整):

      • (命令参考)
      • (有用的特殊性)
      • %A
        等特殊页面)
      • (专页)
      • 等特殊页面)
      • ^
        插入符号)

      处理每一行都需要转义,为什么不将文件附加到一个小存根上,该存根会分割
      有效负载
      ,然后将其自身删除?不,我不能。这只是一个更大程序的一小部分。您可以将每个百分比符号翻倍以避开它们
      echo echo%%%A^>^>myfile.txt>>myfile.bat
      你能提出你的问题并发布你的
      myfile.txt
      的一些内容,并在你的目标中进行更多的解释吗?@Hackoo测试内容是:test>>hello处理每一行都需要转义,为什么不把这个文件附加到一个小存根上,这个存根分割了
      有效载荷
      ,然后删除它自己呢?不,我不能。这只是一个更大程序的一小部分。您可以将每个百分比符号翻倍以避开它们
      echo echo%%%A^>^>^>myfile.txt>>myfile.bat
      你能提出你的问题并发布你的
      myfile.txt
      中的一些内容吗?expalin更多关于你的目标吗?@Hackoo测试内容是:test>>HelloNo,对于这个程序我需要echo^>^>^>^>>>myfile.txt格式no,对于这个程序我需要echo^>^>^>>myfile.txt格式