窗口命令 : echo without new line but with CR

标签 windows batch-file cmd

我想在 Windows 批处理文件的循环内的同一行上写。 例如:

setlocal EnableDelayedExpansion
set file_number=0
for %%f in (*) do (
  set /a file_number+=1
  echo working on file number !file_number!
  something.exe %%f
)
setlocal DisableDelayedExpansion

这将导致:

echo working on file number 1

echo working on file number 2

echo working on file number 3

. . .

我希望他们都在同一条线上。 我发现了一个删除新行的技巧(例如这里:Windows batch: echo without new line),但这会产生一条长线。

谢谢!

最佳答案

@echo off
    setlocal enableextensions enabledelayedexpansion

    for /f %%a in ('copy "%~f0" nul /z') do set "CR=%%a"

    set "count=0"
    for %%a in (*) do (
        set /a "count+=1"
        <nul set /p ".=working on file !count! !CR!"
    )

第一个for命令执行复制操作,在变量内留下一个回车符。

现在,在文件循环中,每一行都使用 <nul set /p 回显这将输出没有换行且不等待输入的提示字符串(我们正在阅读 nul )。但在回显的数据中,我们包含了之前获得的回车符。

但要让它工作,CR变量需要与延迟扩展相呼应。否则将无法正常工作。

如果出于某种原因你需要禁用延迟扩展,这可以在没有 CR 变量的情况下使用 for 来完成。命令可替换参数

@echo off
    setlocal enableextensions disabledelayedexpansion

    for /f %%a in ('copy "%~f0" nul /z') do (
        for /l %%b in (0 1 1000) do (
            <nul set /p ".=This is the line %%b%%a"
        )
    )

关于窗口命令 : echo without new line but with CR,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25773052/

相关文章:

powershell - 更改无线网络安全 key CMD 或 VBScript

windows - 连续执行2个批处理脚本

c++ - 监视 Windows 移动设备上每个线程的 CPU 使用率

windows - 如何将表格置于帮助模式?

java - 在Python中运行包含java命令的批处理文件

窗口/命令 |如果例如,如何断线字符数达到?

windows - 如何使用 Perl 检查 Windows 设备驱动程序是否已加载?

windows - 使用路径中的空间使用批处理脚本复制文件

android - 在 Android Studio 上更改签名应用程序的方法

c - 如何通过cmd执行C文件