[英]Batch: All lines above number skip are shown, when only the line number skip is needed
我正在嘗試創建一個批處理文件,以(姓氏)(名字的第一個字母)的格式將名稱列表轉換為用戶名,例如 Robert Smith -> SmithR 我已經對大部分內容進行了排序,但是我我在循環文本文檔中的行時遇到問題,我不確定為什么要這樣做。 我想知道你們是否可以告訴我如何解決它
提前致謝^-^
代碼: http : //pastebin.com/zDtJrPrV名稱: http : //pastebin.com/xbh3WTSv
你的腳本充滿了低效率,而且比它需要的要長得多。 您的第一個for /f
循環受到無用使用findstr
,如果您的名稱文件包含任何空行,這實際上弊大於利。 並且for /f "skip=N"
名稱文件的每一行啟動一個新的for /f "skip=N"
將導致文件在每次迭代時被打開、讀取和關閉,而實際上它只需要打開一次。 使用find /c
計算文本文件中的行數更優雅。
在這里,用鹽調味:
@echo off
setlocal
set "names=names.txt"
set "outfile=outfile.txt"
for /f %%I in ('find "" /v /c ^< "%names%"') do set /a "lines=%%I"
choice /c YN /n /m "Preparing to process %lines% lines. Continue? (y/n) "
if errorlevel 2 goto :EOF
>"%outfile%" (
setlocal enabledelayedexpansion
for /f "usebackq tokens=1*" %%I in ("%names%") do (
set "first=%%I"
echo %%J!first:~0,1!
)
endlocal
)
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.