批处理脚本;当输入被馈送到变量时,希望从复制粘贴的用户输入中删除换行符

问题描述 投票:0回答:1

我有以下 .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 之后引入。

有没有办法解决这个问题/我可以做些什么来在传入数据时删除或忽略换行符?

我已经查看了这里和其他网站上的几个现有问题;据我所知,他们都没有尝试这样做,但由于谷歌功能不足,我很可能错过了一些。任何指示或帮助将不胜感激。

据我所知,使用单独的输入文件进行读取很简单,但是我试图最大限度地减少用户所需的总步骤(打开单独的文件,粘贴数据,保存文件,运行脚本等)。

我考虑过使用翻译功能(尝试改变 例如“”),但据我所知,在分配变量时这似乎是不可能的;仅分配一次,当我遇到的问题发生时,这已经过去了。

batch-file
1个回答
0
投票

[未经测试]

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
,然后要求一个新值。

请注意,需要包含下一行(空单元格)作为粘贴的输入。

    

© www.soinside.com 2019 - 2024. All rights reserved.