【发布时间】:2021-02-04 09:46:36
【问题描述】:
所以,正如标题所说,如果我将批处理文件输出到文本文件中,我想删除放在被调用命令前面的目录或路径。
例如,我有一个这样的批处理文件
call :sub>log.txt
:sub
SET ip=127.0.0.1
ping %ip%
我得到的输出是这样的:
C:\Users\...>SET ip=127.0.0.1
C:\Users...>ping 127.0.0.1
pingoutput
我想要的是这个:
SET ip=127.0.0.1
ping 127.0.0.1
pingoutput
前面的路径对于深层目录可能会很烦人。 上面的例子就是这样,例子。我想创建一个批处理文件来安装一个sql数据库和不同的触发器和函数,这样我就可以很容易地将它部署在不同的电脑上。
编辑说:@echo off 在开头只是完全删除了一行,甚至是命令本身。
【问题讨论】:
-
前缀是控制台窗口的提示字符串,可以用
promptcommand更改。例如,您可以使用prompt $H来获得一个空提示(实际上$H代表一个退格字符,但在这里它没有任何作用,虽然它会在您重定向到此类时包含在一个文件中),但我建议不要使用空提示,因为控制台看起来很混乱...... -
据我所知,使用
$H,@aschipfl,我记得它会在输出文件中产生奇怪的字符。这是否在不同版本的 Windows/cmd.exe/notepad.exe 中发生了变化,我无法确认,因此我在回答中只使用了$G。也许$_会提供类似的东西,只是它显然会包含一个额外的空行。 -
你说得对,@Compo,我只是玩了一下,发现(在我的 Windows 7 机器上)
prompt $H产生序列 BS + SPACE + BS (我想这可能是为了在 BS 刚向后移动时真正清除控制台上的前一个字符)。因此,获得空提示文本的唯一剩余可能性是本地磁盘上的$M和带有空的pushd/popd缓冲区的$+(都启用了命令扩展),这两者都不太有用说限制/依赖...
标签: batch-file directory path output