找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 36574|回复: 10

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

[复制链接]
发表于 2015-5-13 22:59:53 | 显示全部楼层 |阅读模式
本帖最后由 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
复制代码

评分

参与人数 1PB +2 收起 理由
Batcher + 2 感谢给帖子标题标注[已解决]字样

查看全部评分

发表于 2015-5-14 01:33:32 | 显示全部楼层
本帖最后由 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
发表于 2015-5-14 06:28:14 | 显示全部楼层
本帖最后由 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%
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

 楼主| 发表于 2015-5-14 06:30:39 | 显示全部楼层
@echo off
:bb
setlocal enabledelayedexpansion
set /p var=请输入查找内容
for /f "tokens=1*" %%a i ...
fcxk 发表于 2015-5-14 01:33



    多谢。。。。

你这个代码,如果输入zwdd,不显示。输入ZWDD会显示。。
就是说,实际相要的效果是不区分大小写。
 楼主| 发表于 2015-5-14 06:35:19 | 显示全部楼层
czjt1234 发表于 2015-5-14 06:28



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

楼上的大体好用。但不能忽略大小写。。
发表于 2015-5-14 06:40:46 | 显示全部楼层
已修改~~~~~~~~~~~
 楼主| 发表于 2015-5-14 06:45:27 | 显示全部楼层
已修改~~~~~~~~~~~
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
复制代码
发表于 2015-5-14 08:43:39 | 显示全部楼层
回复 4# ygqiang


    加个 i 就行了
发表于 2015-5-14 09:54:45 | 显示全部楼层
本帖最后由 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
 楼主| 发表于 2015-5-14 13:11:31 | 显示全部楼层
本帖最后由 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
复制代码
发表于 2015-5-14 22:51:02 | 显示全部楼层
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
复制代码

评分

参与人数 1技术 +1 收起 理由
Batcher + 1 乐于助人

查看全部评分

您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 05:26 , Processed in 0.023893 second(s), 9 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表