我试图创建一个批处理文件,将名称列表转换为用户名,格式为(姓氏)(名字的第一个字母),例如Robert Smith - > SmithR 我已将大部分内容排序,但我遇到问题,它会在文本文档中循环这些行,我不知道为什么会这样做。我想知道你们是否可以告诉我如何解决它
提前致谢^ - ^
代码:http://pastebin.com/zDtJrPrV NAMES:http://pastebin.com/xbh3WTSv
答案 0 :(得分:1)
您的脚本效率低下,并且比需要的时间长得多。您的第一个for /f
循环会因无用的findstr
而受到影响,如果您的名称文件包含任何空白行,那么这实际上会带来更多弊大于利。为名称文件的每一行启动一个新的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
)