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

[文件操作] 批处理怎样用查找的内容为名创建文件?

[复制链接]
发表于 2011-12-22 15:10:30 | 显示全部楼层 |阅读模式
是这样,
我有一个文件set.ini 内有一行 shop1=gz011  而gz011是变化的
想在其中查找并取shop1=后面的内容 创建一个以类似gz011.txt的文件,语句怎么写,高手
 楼主| 发表于 2011-12-22 15:12:55 | 显示全部楼层
补充,最好在gz011.txt 内也加一行 为 店铺代码为gz011
发表于 2011-12-22 15:19:20 | 显示全部楼层
本帖最后由 qq2501 于 2011-12-22 15:32 编辑

http://www.bathome.net/thread-15020-1-2.html

这个和你的问题很像
  1. @echo off
  2. for /f "usebackq tokens=2 delims=^=" %%a in (`findstr "shop1" set.ini`) do echo 店铺代码为%%a>%%a.txt
  3. pause
复制代码
 楼主| 发表于 2011-12-22 15:55:25 | 显示全部楼层
谢谢,太神速了,还没打完一个瞌睡呢,Perfect
 楼主| 发表于 2011-12-22 16:38:31 | 显示全部楼层
又遇到一个问题,我想在上面创建的文件里追加一些内容比如,ping -n 5 61.144.1.1>>%%a.txt
这样可以吗?
第二个问题,我想收集主机的配置,取systeminfo 命令里的"系统制造商","处理器","物理内存总量",不知怎么写,处理器那处 是两行,我想取第二行,
谢谢
发表于 2011-12-22 22:27:16 | 显示全部楼层
本帖最后由 qq2501 于 2011-12-22 22:46 编辑
  1. @echo off
  2. for /f "usebackq tokens=2 delims=^=" %%a in (`findstr "shop1" set.ini`) do echo 店铺代码为%%a >%%a.txt & ping -n 3 61.144.1.1>>%%a.txt & set a=%%a
  3. echo, 处理器:>>%a%.txt
  4. for /f "usebackq tokens=1,2* delims=:" %%i in (`systeminfo`) do echo,%%j | findstr "x86" >>%a%.txt
  5. pause
复制代码
 楼主| 发表于 2011-12-23 20:58:07 | 显示全部楼层
太感谢了,还有一个问题, 我"拼"了一些语句 是收集电脑信息及网络情况并 把这些信息保存到文件 上传到FTP上,
好像有些问题,请帮忙看看
@echo off
if exist C:\Xr-V6Before\dblogin.ini (for /f "usebackq tokens=2 delims=^=" %%x in (`findstr "LocalStore" C:\Xr-V6Before\dblogin.ini`) do echo 店铺代码为%%x>%%x.txt) else (for /f "usebackq tokens=2 delims=^=" %%x in (`findstr "LocalStore" D:\Xr-V6Before\dblogin.ini`) do echo 店铺代码为%%x>%%x.txt)

setlocal enabledelayedexpansion
echo 当前时间及本机IP地址:>>!x!.txt
for /f "tokens=2 delims=:" %%i in ('ipconfig^|find "IP Address"') do echo %date:~0,10% %time:~0,5% %%i>>!x!.txt

rem  显示本机外网IP 地址
echo On Error Resume next >checkip.vbs
echo Set oDOM=WScript.GetObject("http://www.ip138.com/ip2city.asp") >>checkip.vbs
echo Do Until oDOM.readyState="complete" >>checkip.vbs
echo WScript.sleep 100 >>checkip.vbs
echo Loop >>checkip.vbs
echo str = Split(oDOM.documentElement.outerText,"[") >>checkip.vbs
echo Set oDOM=nothing >>checkip.vbs
echo ip = Split(str(1),"]") >>checkip.vbs
echo Set FSO = CreateObject("Scripting.FileSystemObject") >>checkip.vbs
echo Set SCF = FSO.OpenTextFile(FSO.BuildPath(FSO.GetSpecialFolder(0),"ip.txt"),2,True) >>checkip.vbs
echo SCF.Write(ip(0)) >>checkip.vbs
echo SCF.Close >>checkip.vbs
echo fso.DeleteFile(WScript.ScriptName) >>checkip.vbs
checkip.vbs
set/p n=<%windir%\ip.txt&cls
echo 外网IP:%n%>>!x!.txt
echo\>>!x!.txt
echo\>>!x!.txt

echo 本机配置信息>>!x!.txt
echo ========================>>!x!.txt
for /f "tokens=2 delims=[版本" %%i in ('ver') do (set a=%%i&set b=!a:]=!&set c=!b: =!)
if "%a:~1,3%" equ "5.1" echo WINXP=%c%>>!x!.txt
if "%a:~1,3%" equ "5.2" echo WIN2003=%c%>>!x!.txt
if "%a:~1,3%" equ "6.1" echo WIN7=%c%>>!x!.txt

(
  echo 计算机名: %COMPUTERNAME%
  for /f "skip=4 tokens=1* delims= " %%a in ('reg query HKLM\HARDWARE\DESCRIPTION\System\CentralProcessor\0 /V ProcessorNameString') do (
    set tt=%%a&set tt=!tt:~27!&echo CPU: !tt! %%b
  )
  for /f "tokens=2 delims==" %%a in ('wmic MEMLOGICAL get TotalPhysicalMemory /value') do (set /a "TGB=%%a/1048576,TGB_p=%%a*100/1048576%%100"&echo 总物理内存: !TGB!.!TGB_p! GB)
  for /f "tokens=2 delims==" %%a in ('cmd /c "wmic baseboard get Manufacturer,Product /value"') do (
    set bbinfo=!bbinfo! %%a)
  echo 主板:!bbinfo!
)>>!x!.txt

echo\>>!x!.txt
echo\>>!x!.txt
@echo on
echo ping店铺到机房>>!x!.txt
echo ========================>>!x!.txt
ping -n 5 219.136.240.10>>!x!.txt
echo\>>!x!.txt
echo\>>!x!.txt

echo ping店铺到广州电信>>!x!.txt
echo ========================>>!x!.txt
ping -n 5 61.144.1.1>>!x!.txt
echo\>>!x!.txt
echo\>>!x!.txt

echo tracert店铺到电信>>!x!.txt
echo ========================>>!x!.txt
tracert 61.144.1.1>>!x!.txt
echo\>>!x!.txt
echo\>>!x!.txt


echo tracert店铺到机房>>!x!.txt
echo ========================>>!x!.txt
tracert 219.136.240.10>>!x!.txt

rem 上传FTP
echo Open 192.168.124.11>ftp1.txt
echo User gzit 123456>>ftp1.txt
echo prompt>>ftp1.txt
echo mput %%a.txt>>ftp1.txt
echo bye>>ftp1.txt
echo quit>>ftp1.txt
echo exit>>ftp1.txt
ftp -n -s:ftp1.txt
del ftp1.txt


pause
发表于 2011-12-23 21:11:46 | 显示全部楼层
回复 7# zever


报错信息是什么?
 楼主| 发表于 2011-12-23 21:30:16 | 显示全部楼层
我是想把这所有信息保存到以(if exist C:\Xr-V6Before\dblogin.ini (for /f "usebackq tokens=2 delims=^=" %%x in (`findstr "LocalStore" C:\Xr-V6Before\dblogin.ini`) do echo 店铺代码为%%x>%%x.txt) else (for /f "usebackq tokens=2 delims=^=" %%x in (`findstr "LocalStore" D:\Xr-V6Before\dblogin.ini`) do echo 店铺代码为%%x)获取的内容为名字的文件里,并上传FTP,但是他保存了两个文件,多了一个, " .txt"
发表于 2011-12-23 21:41:56 | 显示全部楼层
回复 9# zever


这样创建文件试试:
  1. @echo off
  2. if exist C:\Xr-V6Before\dblogin.ini (
  3.     set "fileini=C:\Xr-V6Before\dblogin.ini"
  4. ) else (
  5.     set "fileini=D:\Xr-V6Before\dblogin.ini"
  6. )
  7. for /f "tokens=2 delims==" %%x in ('findstr "LocalStore" "%fileini%"') do (
  8.     if "%%x" neq "" (
  9.         >%%x.txt echo 店铺代码为%%x
  10.     )
  11. )
复制代码
 楼主| 发表于 2011-12-23 21:49:25 | 显示全部楼层
还是一样,能不能用一个固定名字,再在后面改名,只是后面改名和上传怎样调用这个名字,不会
发表于 2011-12-23 22:17:23 | 显示全部楼层
回复 11# zever


这样呢?
  1. @echo off
  2. if exist C:\Xr-V6Before\dblogin.ini (
  3.     set "fileini=C:\Xr-V6Before\dblogin.ini"
  4. ) else (
  5.     set "fileini=D:\Xr-V6Before\dblogin.ini"
  6. )
  7. for /f "tokens=2 delims==" %%x in ('type "%fileini%" ^| findstr "LocalStore"') do (
  8.     if "%%x" neq "" (
  9.         >%%x.txt echo 店铺代码为%%x
  10.         goto :next
  11.     )
  12. )

  13. :next
  14. rem 下面是setlocal enabledelayedexpansion及后面的内容
复制代码
发表于 2011-12-23 22:20:18 | 显示全部楼层
回复 9# zever


第五行里面的!x!,这个变量x根本没有定义过,你直接使用肯定出问题啊。
 楼主| 发表于 2011-12-23 22:22:28 | 显示全部楼层
还是多一个文件
发表于 2011-12-23 22:24:48 | 显示全部楼层
  1. @echo off
  2. if exist C:\Xr-V6Before\dblogin.ini (
  3.     set "fileini=C:\Xr-V6Before\dblogin.ini"
  4. ) else (
  5.     set "fileini=D:\Xr-V6Before\dblogin.ini"
  6. )
  7. for /f "tokens=2 delims==" %%x in ('findstr "LocalStore" "%fileini%"') do (
  8.     if "%%x" neq "" (
  9.         >%%x.txt echo 店铺代码为%%x
  10.         rem for循环里面的控制变量%%x的作用域仅限于循环内部
  11.         rem 后面的变量x需要自己定义一下才行
  12.         set "x=%%x"
  13.     )
  14. )
  15. setlocal enabledelayedexpansion
  16. echo 当前时间及本机IP地址:>>!x!.txt
  17. ......
复制代码
您需要登录后才可以回帖 登录 | 注册

本版积分规则

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

GMT+8, 2026-3-18 11:30 , Processed in 0.022656 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

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