我有以下 .bat 脚本(隐藏了一些细节以隐藏敏感信息);目的是让用户运行脚本并能够粘贴一组帐户 ID(通常来自 Excel 文档),然后将其处理为 URL 以在新的浏览器选项卡中打开一组选项卡。我选择尝试将其作为 .bat 执行此操作,以最大程度地减少用户所需的开销(我只需提供一个文件即可运行,无需安装任何内容,复制粘贴值,tada!在浏览器中打开帐户).
@echo off
setlocal EnableDelayedExpansion
title Test script - opens multiple accounts in new browser tabs.
set /p input= Enter account IDs:
set n=0
for %%a in (%input%) do (
set /A n+=1
set "accountID[!n!]=%%~a"
)
for /L %%i in (1,1,%n%) do (
echo %%i- !accountID[%%i]!
start "" chrome.exe "hidden"!accountID[%%i]!"hidden"
)
pause
如果以空格作为分隔符手动输入 ID,则效果完全符合预期;但是,如果从 Excel 粘贴 ID,则由于换行符 ( ),由于 ID 是从 Excel 中的列复制而来,因此在每个 ID 之后引入。
有没有办法解决这个问题/我可以做些什么来在传入数据时删除或忽略换行符?
我已经查看了这里和其他网站上的几个现有问题;据我所知,他们都没有尝试这样做,但由于谷歌功能不足,我很可能错过了一些。任何指示或帮助将不胜感激。
据我所知,使用单独的输入文件进行读取很简单,但是我试图最大限度地减少用户所需的总步骤(打开单独的文件,粘贴数据,保存文件,运行脚本等)。
我考虑过使用翻译功能(尝试改变 例如“”),但据我所知,在分配变量时这似乎是不可能的;仅分配一次,当我遇到的问题发生时,这已经过去了。
[未经测试]
set n=0
:again
set "input="
set /p input= Enter account IDs:
if not defined input goto alldone
for %%a in (%input%) do (
set /A n+=1
set "accountID[!n!]=%%~a"
)
goto again
:alldone
我目前没有能力对此进行测试。
问题是 - 如何向批次指示输入已完成。
所以 - 首先将计数设置为
0
。
然后反复将
set
的值input
更改为无。读取输入,如果什么都没有,则跳过数字的累积
请注意,如果仅“按下” Enter,则变量的值不会被 set /p
改变。
因此,清除
input
,然后要求一个新值。
请注意,需要包含下一行(空单元格)作为粘贴的输入。