uib*_*uib 3 windows cmd batch-file
我想在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
Run Code Online (Sandbox Code Playgroud)
这将导致:
echo在文件号1上工作
echo在文件号2上工作
echo工作在3号文件上
...
我希望他们所有人都在同一条线上.我找到了一个删除新行的黑客(例如:Windows批处理:没有换行的回声),但这会产生一个长行.
谢谢!
@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!"
)
Run Code Online (Sandbox Code Playgroud)
第一个for命令执行复制操作,该操作在变量内留下回车符.
现在,在文件循环中,每一行都使用一个回显<nul set /p,它将输出提示字符串而不需要换行而不等待输入(我们正在读取nul).但在数据回显中,我们包括先前获得的回车.
但要使其工作,CR变量需要通过延迟扩展来回应.否则它将无法工作.
如果由于某种原因需要禁用延迟扩展,可以使用for命令replaceable参数在没有CR变量的情况下完成此操作
@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"
)
)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8610 次 |
| 最近记录: |