【问题标题】:batch script to make batch script批处理脚本制作批处理脚本
【发布时间】:2017-01-27 20:02:48
【问题描述】:

好吧,我想制作一个批处理脚本:

  1. 在用户桌面上制作导出文件夹
  2. 从新(如不从某处复制)在该文件夹中创建一个批处理脚本,在用户填充该文件夹并将其保存到桌面后列出该文件夹的内容。

我遇到的问题是我正在尝试使用 echo 将预期的新脚本文本从原始批处理文件复制到新的批处理文件中,如下所示:

@echo off 
mkdir "C:\Users\%username%\Desktop\Export"
echo dir "C:\Users\%username%\Desktop\Export" /W /A:-H /B > "C:\Users\%username%\Desktop\Readout.txt" > "C:\Users\%username%\Desktop\Export\Directoty_List.bat"

问题是 echo 命令将“>”视为语句的结尾并将第一部分写入桌面文本文件,但我希望它看到第二个“>”。我该如何解决这个问题?

谢谢

【问题讨论】:

标签: batch-file text copy echo


【解决方案1】:

正如@Richard 在 cmets 中所说的,您可以使用 carret 符号 ^> 转义 >。如果您不想使用特殊含义,则 cmd 中大多数具有特殊含义的字符都可以使用 carret 进行转义。
通常,黄金法则是:将所有内容放在双引号之间。在双引号内,具有特殊含义的字符也会被转义。不幸的是,echo 也会打印引号,所以这对你的情况没有帮助。仍然值得一提的是,在使用特殊字符设置变量的值、使用特殊字符传递参数、使用特殊字符(例如,空格或括号)定义路径时,引号会有所帮助,...但不适用于 echo.

我想再提一个建议:您可以使用%userprofile% 而不是指定整个路径C:\Users\%username%

@echo off
mkdir "%userprofile%\Desktop\Export"
echo dir "%userprofile%\Desktop\Export" /W /A:-H /B ^> "%userprofile%\Desktop\Readout.txt" > "%userprofile%\Desktop\Export\Directoty_List.bat"

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2014-02-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-30
    相关资源
    最近更新 更多