Board logo

标题: 批处理怎么获取变量=文本内容,10元支付宝 已解决 [打印本页]

作者: 661100a    时间: 2018-8-29 12:45     标题: 批处理怎么获取变量=文本内容,10元支付宝 已解决

本帖最后由 661100a 于 2018-8-29 13:10 编辑

怎么获取变量=文本内容,谢谢帮忙 研究半天了
1.txt内容

13438204183
15114309774
---------------


bat文件名为 a (1).bat a (2).bat ---a (99).bat  或者 任意名字 (1).bat ~ 任意名字 (99).bat
内容为:
set m=13438204183

如果打开文件名  (2).bat 那么就获取到1.txt里面的第二行数值
set m=15114309774
作者: cfwyy77_bat    时间: 2018-8-29 12:54

你这是为了要生成99个bat ?  还是为了什么? 取哪一行也不用 生成99个bat吧,要哪行可以用参数传进去的。
作者: zaqmlp    时间: 2018-8-29 12:55

  1. @echo off
  2. for /f "tokens=2 delims=()" %%a in ("%~n0") do set n=%%a
  3. set /a n-=1
  4. for /f "delims=" %%a in ('more +%n% "1.txt"') do (
  5.     if not defined m set "m=%%a"
  6. )
  7. echo;%m%
  8. pause
复制代码

作者: 661100a    时间: 2018-8-29 12:55

我要生成99个~NN个 bat  然后使用
作者: Batcher    时间: 2018-8-29 12:55

  1. @echo off
  2. for /f "tokens=2 delims=()" %%a in ("%~n0") do (
  3.     set FileNum=%%a
  4. )
  5. for /f "tokens=1,2 delims=:" %%a in ('type "1.txt" ^| findstr /n .*') do (
  6.     if %FileNum% equ %%a (
  7.         set m=%%b
  8.     )
  9. )
  10. echo,%m%
  11. pause
复制代码

作者: 661100a    时间: 2018-8-29 12:56

(1)~(NN) 是批量修改文件名系统自动排序的
作者: 661100a    时间: 2018-8-29 13:01

回复 3# zaqmlp


    厉害 ,支付宝多少
作者: digger    时间: 2018-8-29 13:01

  1. @echo off&setlocal enabledelayedexpansion
  2. for /f "delims=" %%i in (1.txt) do (
  3.    set /a n+=1
  4.   >a^(!n!^).bat echo,set m=%%i
  5. )
  6. pause
复制代码
回复 1# 661100a
作者: zaqmlp    时间: 2018-8-29 13:01

回复 7# 661100a

扫头像
作者: 661100a    时间: 2018-8-29 13:03

本帖最后由 661100a 于 2018-8-29 13:11 编辑

回复 5# Batcher


我给 3楼 管理员发的是在后面了
作者: yhcfsr    时间: 2018-8-29 13:25

本帖最后由 yhcfsr 于 2018-8-29 13:29 编辑
  1. @echo off
  2. ::设置文本路径
  3. set "Text=a.txt"
  4. ::========主程序区========
  5. call :get_index "%~n0" index
  6. call :get_lines %index% line
  7. ::设置变量m
  8. set "m=%line%"
  9. pause&exit
  10. ::========子程序区========
  11. :get_index 获取脚本序号
  12. setlocal
  13. set "ScriptName=%~1"
  14. set "num="
  15. :lp
  16. set "n=%ScriptName:~-1%"
  17. if "%n%" neq "(" (
  18. if "%n%" neq ")" set "num=%n%%num%"
  19. set "ScriptName=%ScriptName:~,-1%"
  20. goto:lp
  21. )
  22. endlocal&set "%2=%num%"&goto:eof
  23. :get_lines 获取序号对应行
  24. setlocal
  25. set/a "n=%~1 - 1"
  26. for /f "skip=%n% delims=" %%a in ('type "%Text%"') do endlocal&set "%2=%%a"&goto:eof
复制代码
获取序号用了比较烦琐的方法,主要是考虑到如果是这样的文件名:ab(cd)efg(1).bat
作者: ai20110304    时间: 2018-8-29 15:37

回复 9# zaqmlp


    不错的头像
作者: ai20110304    时间: 2018-8-29 16:51

回复 3# zaqmlp


    楼主方法很巧妙more直接定位过去




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