Board logo

标题: [文件操作] [已解决]bat如何根据输入的名字,获取txt文件里面的某个值,作为变量使用? [打印本页]

作者: ygqiang    时间: 2015-5-13 22:59     标题: [已解决]bat如何根据输入的名字,获取txt文件里面的某个值,作为变量使用?

本帖最后由 ygqiang 于 2015-5-14 21:26 编辑

[已解决]xp或win7系统。bat如何根据输入的名字,获取txt文件里面的某个值,作为变量使用?

192.168.10.txt文件的内容如下
CB1        11
CB3        13
CB4        14
CB5        15
CB6        16
CB7        17
CB8        18
CB9        19
CB10        20
CB11        21
CB12        22
CB2        12
ZWDD        33
ZWJH1        31
ZWJH2        32

根据输入的名字。。。匹配后面的数字,赋值给变量。。
比如输入ZWDD或者zwdd(不区分大小写),变量就赋值33
如果输入zw或者ZWD或者随便输入数字2,都没有一个匹配的,就提示没有zw/zwd/2的名字。。

获取到的变量应该是后面的数字。。。作为ip地址使用。。。


下面的代码,如何修改?
  1. @echo off
  2. for /f "tokens=2" %%i in (192.168.10.txt) do (
  3.     echo,%%i
  4. )
  5. pause
  6. @echo off
  7. for /f "tokens=1" %%i in (192.168.10.txt) do (
  8.     echo,%%i
  9. )
  10. pause
复制代码
下面的这个代码,有很多小问题。。。
  1. @echo off
  2. set /p var=请输入:
  3. for /f "tokens=2" %%i in ('findstr /i "%VAR%" 192.168.10.txt') do (
  4.   if "%%i"=="" (
  5.     echo 无%var%
  6.   ) else echo %%i
  7. )
  8. pause
  9. exit
复制代码

作者: fcxk    时间: 2015-5-14 01:33

本帖最后由 fcxk 于 2015-5-14 01:34 编辑

@echo off
:bb
setlocal enabledelayedexpansion
set /p var=请输入查找内容
for /f "tokens=1*" %%a in ('findstr "!var!" 192.168.10.txt') do (
   if "%%a"=="!var!" echo,%%a %%b
)
ping -n 2 0 >nul
goto bb
pause
作者: czjt1234    时间: 2015-5-14 06:28

本帖最后由 czjt1234 于 2015-5-14 06:40 编辑
  1. @echo off
  2. set /p var=请输入:
  3. set sOut=未找到
  4. for /f "tokens=1,2" %%i in (192.168.10.txt) do (
  5.     if /i %%i==%var% set sOut=%%j
  6. )
  7. echo %sOut%
复制代码

作者: ygqiang    时间: 2015-5-14 06:30

@echo off
:bb
setlocal enabledelayedexpansion
set /p var=请输入查找内容
for /f "tokens=1*" %%a i ...
fcxk 发表于 2015-5-14 01:33



    多谢。。。。

你这个代码,如果输入zwdd,不显示。输入ZWDD会显示。。
就是说,实际相要的效果是不区分大小写。
作者: ygqiang    时间: 2015-5-14 06:35

czjt1234 发表于 2015-5-14 06:28



多谢。你的这个代码。不好用。。。

楼上的大体好用。但不能忽略大小写。。
作者: czjt1234    时间: 2015-5-14 06:40

已修改~~~~~~~~~~~
作者: ygqiang    时间: 2015-5-14 06:45

已修改~~~~~~~~~~~
czjt1234 发表于 2015-5-14 06:40



    多谢。。测试好用。。。
  1. @echo off
  2. set /p var=请输入:
  3. set sOut=未找到
  4. for /f "tokens=1,2" %%i in (192.168.10.txt) do (
  5.     if /i %%i equ %var% set sOut=%%j
  6. )
  7. echo %sOut%
  8. pause
复制代码

作者: fcxk    时间: 2015-5-14 08:43

回复 4# ygqiang


    加个 i 就行了
作者: fcxk    时间: 2015-5-14 09:54

本帖最后由 fcxk 于 2015-5-14 09:56 编辑

回复 1# ygqiang


@echo off
:bb
cls
setlocal enabledelayedexpansion
set /p var=请输入查找内容
for /f "tokens=1*" %%a in ('findstr /i "!var!" 192.168.10.txt') do ( echo,%%a %%b )
ping -n 2 0 >nul
goto bb
pause
作者: ygqiang    时间: 2015-5-14 13:11

本帖最后由 ygqiang 于 2015-5-14 13:14 编辑
回复  ygqiang


@echo off
:bb
cls
setlocal enabledelayedexpansion
set /p var=请输入查找内容
...
fcxk 发表于 2015-5-14 09:54



多谢。。。。你的代码还是有问题。。如果输入w或者2的时候。。

下面是最终代码。。。
  1. @ECHO OFF
  2. set Addr=192.168.8
  3. set Mask=255.255.255.128
  4. set Gway=192.168.8.1
  5. cls
  6. set /p name=输入计算机名,按回车键:
  7. set slection1=未找到对应的IP
  8. for /f "tokens=1,2" %%i in (计算机名-ip地址.txt) do (
  9.     if /i %%i==%name% set slection1=%%j
  10. )
  11. if %slection1% equ 未找到对应的IP (
  12.     set /p slection1=请输入IP地址,按回车键(%Addr%.只输最后1位):
  13. )
  14. cls
  15. echo 计算机名:%name%
  16. echo ip地址:%Addr%.%slection1%
  17. echo 正在修改中...
  18. ping 127.0.0.1 -n 2 >nul 2>nul
  19. reg add "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\ComputerName\ComputerName" /v "ComputerName" /t reg_sz /d %name% /f >nul 2>nul
  20. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t reg_sz /d %name% /f >nul 2>nul
  21. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "NV Hostname" /t reg_sz /d %name% /f >nul 2>nul
  22. reg add "HKEY_LOCAL_MACHINE\System\CurrentControlSet\Services\Tcpip\Parameters" /v "Hostname" /t reg_sz /d %name% /f >nul 2>nul
  23. reg add "HKLM\SYSTEM\ControlSet001\Control\ComputerName\ActiveComputerName" /v "ComputerName" /t REG_SZ /d "%name%" /f
  24. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "NV Hostname" /t REG_SZ /d "%name%" /f
  25. reg add "HKLM\SYSTEM\ControlSet001\Services\Tcpip\Parameters" /v "Hostname" /t REG_SZ /d "%name%" /f
  26. reg add "HKLM\SYSTEM\ControlSet002\Control\ComputerName\ComputerName" /v "ComputerName" /t REG_SZ /d "%name%" /f
  27. ::用ipconfig /all命令获取网卡名称。
  28. FOR /F "tokens=2*" %%i IN ('ipconfig/all^|find /i "Ethernet adapter "') DO set name=%%j
  29. ::用for命令删除网卡名称后面的冒号。
  30. FOR /F "tokens=1* delims=:" %%i in ("%name%") do set a=%%i
  31. netsh interface ip set address name="%a%" source=static addr="%Addr%.%slection1%" mask=%Mask% gateway=%Gway% gwmetric=1 >nul 2>nul
复制代码

作者: terse    时间: 2015-5-14 22:51

findstr 应该可行
  1. @echo off
  2. set /p name=输入计算机名,按回车键:
  3. for /f "tokens=2"  %%i in ('findstr /ib "%name%\>" 19.168.10.txt') do set slection1=%%i
  4. if not defined slection1 (
  5.    set /p slection1=请输入IP地址,按回车键
  6. )
  7. echo;%slection1%
  8. pause
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2