【问题标题】:Write line from 1 text file to a new text file, excluding the first 18 characters将 1 个文本文件中的行写入新文本文件,不包括前 18 个字符
【发布时间】:2024-05-21 01:25:02
【问题描述】:

我已经搜索了很多地方,但似乎无法找到解决问题的方法。我有一个包含以下行的 .bat 文件:

rasdial "TEST VPN" 用户名密码

我只想将用户名和密码复制到一个新的文本文件中,这样它就只有:

用户名密码

我在搜索过程中发现的一切都完全相反,让我有:

rasdial“测试 VPN”

任何帮助将不胜感激。我很确定这很容易,但我无法自己解决。

提前致谢!

这是我目前拥有的:

@echo off
setlocal disableDelayedExpansion
set "ln1="

>"%USERPROFILE%\Desktop\credentials.txt" (
    for /f "useback delims=" %%A in ("%USERPROFILE%\AppData\Roaming\Project Resources Group\PRG Connect\AutoKeepVPNAlive.bat") do (
      if defined ln1 (
        set "ln2=%%A"
        setlocal enableDelayedExpansion
        echo(!ln1!
        endlocal
        set "ln1="
      )
      for /f %%B in ("%%A") do if "%%B"=="rasdial" set "ln1=%%A"~18%
    )
  )

AutoKeepAliveVPN.bat 的内容是:

TITLE TEST Connect
@ECHO OFF

:loop
cls
set ip3=10.12.0.254
ping -n 1 %ip3% | find "Reply from %ip3%: bytes="
if %ERRORLEVEL%==0 (
    goto loop2
) else (
    goto connect
)

:loop2
cls
timeout 30
set ip1=google.com
ping -n 1 %ip1% | find "Lost = 0"
if not %ERRORLEVEL%==0 (
    goto loop2
) else (
    goto loop
)

:connect
cls
rasdial "TEST VPN" username password
if %ERRORLEVEL%==623 (
    goto setup
) else (
    net use P: "\\10.12.0.254\share"
    goto loop
)

:setup
cls
CALL "%USERPROFILE%\AppData\Roaming\Project Resources Group\PRG Connect\VPN Setup.bat"
exit

【问题讨论】:

  • 如果您有一个分配了该字符串的变量,它就是一个简单的子字符串。 echo %var:~18%
  • 请发布AutoKeepVPNAlive.bat的内容。
  • 这是我创建的一个程序,用于让用户连接到我的 vpn 服务器。当我对程序进行更改时,我希望通知用户(我正在工作)并可以选择更新到最新版本。现在,我正在处理最后一部分,这将使他们不必在重新安装完成后再次运行设置以输入凭据。我基本上是在尝试将他们的凭据保存到一个临时文件中,以便在创建新文件后将它们复制回新文件中。

标签: batch-file text copy output


【解决方案1】:

这是一种更简单的方法来做你需要做的事情。

@echo off
for /f "delims=" %%G in ('findstr /B /I /C:"rasdial" "%USERPROFILE%\AppData\Roaming\Project Resources Group\PRG Connect\AutoKeepVPNAlive.bat"') do SET var=%%G
(echo %var:~18%)>>"%USERPROFILE%\Desktop\credentials.txt"

【讨论】:

  • 这就是我问的原因。我知道它必须有点简单。非常感谢你,壁球手!!!
  • @DDietz,不客气。但是下次尝试在您的初始问题中提供尽可能多的信息。否则,人们会感觉像是牙医在拔牙。
  • 你是绅士和学者!会做。我只是担心有时(大部分时间)我会把事情复杂化,并且不想让那些真正知道他们在说什么的人感到困惑。