[英]Aligning output of echo command in batch script
我編寫了一個簡單的批處理文件來解析日志文件並在屏幕上打印出所需的數據。 除了我的輸出沒有按照我希望的那樣正確對齊之外,我的一切都在工作。 這是我的批處理腳本:
@echo off
setlocal
echo Name Reg No.
echo -------------------------------------
for /f "tokens=1-3 delims=' " %%A in ('findstr "Registered" registration.log') do (
echo %%B %%C
)
endlocal
輸出是:
Name Reg No.
-------------------------------------
Russel McDonald 28068906
Pete 23985688
David Antony 87681747
Jaques 71979798
Jayson Burgers 21343854
Allison Jameson 87446435
但我希望輸出為:
Name Reg No.
-------------------------------------
Russel McDonald 28068906
Pete 23985688
David Antony 87681747
Jaques 71979798
Jayson Burgers 21343854
Allison Jameson 87446435
如何才能做到這一點?
此批處理代碼對齊每個輸出行上的注冊號。
@echo off
setlocal EnableDelayedExpansion
echo Name Reg No.
echo -------------------------------------
for /f "tokens=2,3 delims=' " %%A in ('%SystemRoot%\System32\findstr.exe "Registered" registration.log') do (
set "RegistrationName=%%A "
echo !RegistrationName:~0,19!%%B
)
endlocal
我認為文件registration.log
是制表符分隔的CSV文件,因此delims='
后面的字符是一個水平制表符。
用於對齊注冊號的方法附加到名稱19空格,然后使用子字符串定義從名稱輸出前19個字符。
還有一個版本沒有使用findstr
:
@echo off
setlocal EnableDelayedExpansion
echo Name Reg No.
echo -------------------------------------
for /f "tokens=1-3 delims=' " %%A in (registration.log) do (
if /I "%%A" == "Registered" (
set "RegistrationName=%%B "
echo !RegistrationName:~0,19!%%C
)
)
endlocal
要了解使用的命令及其工作方式,請打開命令提示符窗口,執行以下命令,並完全閱讀為每個命令顯示的所有幫助頁面。
echo /?
endlocal /?
findstr /?
for /?
if /?
set /?
setlocal /?
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.