好的,感谢您提供所有信息,我将 CVS 更改为:
NUMBER;CITY;SERVER;NUMBER1;NUMBER2;EMAIL;ADDRESS
3;3 - NEW YORK;192.168.1.10;32049586848;032059684749;pippo@vision.de;Mießtaler Straße 12 A-9020 Klagenfurt
4;4 - Rome;192.168.1.22;345689768;0234567890;pluto@vision.uk;Via Platani 00133 22 Rome
我改变了这样的代码:
@echo off
cls
setlocal enabledelayedexpansion
set CSVFILE=test.csv
:HOME
cls
set column=""
echo TEST
echo 1 Search IP
echo X Close
echo.
Choice /C 1X /N /M "Please make a selection: "
echo.
IF ERRORLEVEL 2 GOTO :EXIT
IF ERRORLEVEL 1 GOTO :IP
:IP
set column=SERVER
echo ---- Enter IP ----
set /p strsearch=
cls
GOTO :FINDIT
:FINDIT
for /f "skip=1 tokens=*" %%A in (%CSVFILE%) do (
set inline=%%A
for /f "tokens=1-7 delims=;" %%1 in ("!SERVER!") do (
set "NUMBER=%%~1" & set "CITY=%%~2" & set "SERVER=%%~3" & set "ADDRESS=%%~7"
if /I "!%column%!" equ "%strsearch%" GOTO :SHOW
)
)
:NFOUND
echo NOT FOUND Try AGAIN
pause
GOTO :HOME
:SHOW
echo SERVER: %SERVER%
echo Number: %NUMBER%
echo City: %CITY%
echo Address: %ADDRESS%
pause
GOTO :Home
:EXIT
现在应该可以了吗?你怎么看待这件事 ? 我可以使用csv文件和bat文件,我不能在这个系统上使用power shell。
我有一个 CSV 文件:
NCITY;SERVER;NUMBER1;NUMBER2;EMAIL;ADDRESS
3 - NEW YORK;192.168.1.10;32049586848;032059684749;pippo@vision.de;Mießtaler Straße 12 A-9020 Klagenfurt
4 - Rome;192.168.1.22;345689768;0234567890;pluto@vision.uk;Via Platani 00133 22 Rome
我想创建一个 bat 文件,给定一个 IP,在屏幕上显示相应的号码、姓名和地址。 我正在考虑将其用作基本脚本:
@echo off
cls
setlocal enabledelayedexpansion
set CSVFILE=test.csv
:HOME
cls
set column=""
echo TEST
echo 1 Search IP
echo X Close
echo.
Choice /C 1X /N /M "Please make a selection: "
echo.
IF ERRORLEVEL 2 GOTO :EXIT
IF ERRORLEVEL 1 GOTO :IP
:IP
set column=SERVER
echo ---- Enter IP ----
set /p strsearch=
cls
GOTO :FINDIT
:FINDIT
for /f "skip=1 tokens=*" %%A in (%CSVFILE%) do (
set inline=%%A
for /f "tokens=1-5 delims=," %%1 in ("!SERVER!") do (
set "SERVER=%%~1" & set "fname=%%~2" & set "comp=%%3" & set "cit=%%4" & set "stat=%%5"
if /I "!%column%!" equ "%strsearch%" GOTO :SHOW
)
)
:NFOUND
echo NOT FOUND Try AGAIN
pause
GOTO :HOME
:SHOW
echo SERVER: %SERVER%
echo Number: %lname%,%fname%
echo City: %cit%
echo Address: %stat%
pause
GOTO :Home
:EXIT
你能帮我解决吗? 好久没用bat文件了 谢谢
答案 0 :(得分:0)
好的。因此,您不能使用 PowerShell。也许你应该想知道为什么?请不要认为这是您问题的答案。但是,其他人可能会从中受益。
将 PowerShell 用于交互式控制台应用程序对于 PowerShell 的功能来说有点不足。但是,它可以做到。而且,它已经在您支持的 Windows 系统上;无需额外安装。
将其保存在名为 Find-FromServerCsv.ps1 的文件中
使用 .\Find-FromServerCsv
使用 powershell -NoLogo -NoProfile -File ".\Find-FromServerCSV.ps1"
[CmdletBinding()]
Param()
$CsvFile = '.\csvpick.txt'
$Title = "Welcome"
$Info = "Just to Demo Promt for Choice"
$options = [System.Management.Automation.Host.ChoiceDescription[]] @('&Search by IP', '&Exit')
[int]$defaultchoice = 1
$opt = $host.UI.PromptForChoice($Title , $Info , $Options,$defaultchoice)
switch($opt) {
0 {
Write-Verbose 'doing search by IP'
$IpAddress = Read-Host -Prompt 'Please enter the IP address: '
Import-Csv -Path $CsvFile -Delimiter ';' |
Where-Object { $_.SERVER -eq $IpAddress } |
Select-Object -Property NUMBER1,NCITY,ADDRESS
}
1 {
Write-Verbose 'doing exit'
}
}