[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
返回列表 发帖

[文件操作] [已解决]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
复制代码
1

评分人数

    • Batcher: 感谢给帖子标题标注[已解决]字样PB + 2

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

评分人数

TOP

本帖最后由 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
复制代码

TOP

本帖最后由 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

TOP

回复 4# ygqiang


    加个 i 就行了

TOP

已修改~~~~~~~~~~~
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
复制代码

TOP

已修改~~~~~~~~~~~

QQ 20147578

TOP

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



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

楼上的大体好用。但不能忽略大小写。。

TOP

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



    多谢。。。。

你这个代码,如果输入zwdd,不显示。输入ZWDD会显示。。
就是说,实际相要的效果是不区分大小写。

TOP

本帖最后由 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

评分人数


QQ 20147578

TOP

本帖最后由 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

TOP

返回列表