csv文件中的文件bat搜索日期

时间:2021-04-05 15:07:54

标签: windows csv batch-file cmd

好的,感谢您提供所有信息,我将 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文件了 谢谢

1 个答案:

答案 0 :(得分:0)

好的。因此,您不能使用 PowerShell。也许你应该想知道为什么?请不要认为这是您问题的答案。但是,其他人可能会从中受益。

将 PowerShell 用于交互式控制台应用程序对于 PowerShell 的功能来说有点不足。但是,它可以做到。而且,它已经在您支持的 Windows 系统上;无需额外安装。

将其保存在名为 Find-FromServerCsv.ps1 的文件中

使用 .\Find-FromServerCsv

在 PowerShell 控制台中运行它

使用 powershell -NoLogo -NoProfile -File ".\Find-FromServerCSV.ps1"

在 cmd.exe 控制台中运行它
[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'
    }
}
相关问题