Board logo

标题: [文件操作] 批处理怎样用查找的内容为名创建文件? [打印本页]

作者: zever    时间: 2011-12-22 15:10     标题: 批处理怎样用查找的内容为名创建文件?

是这样,
我有一个文件set.ini 内有一行 shop1=gz011  而gz011是变化的
想在其中查找并取shop1=后面的内容 创建一个以类似gz011.txt的文件,语句怎么写,高手
作者: zever    时间: 2011-12-22 15:12

补充,最好在gz011.txt 内也加一行 为 店铺代码为gz011
作者: qq2501    时间: 2011-12-22 15:19

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

作者: zever    时间: 2011-12-22 15:55

谢谢,太神速了,还没打完一个瞌睡呢,Perfect
作者: zever    时间: 2011-12-22 16:38

又遇到一个问题,我想在上面创建的文件里追加一些内容比如,ping -n 5 61.144.1.1>>%%a.txt
这样可以吗?
第二个问题,我想收集主机的配置,取systeminfo 命令里的"系统制造商","处理器","物理内存总量",不知怎么写,处理器那处 是两行,我想取第二行,
谢谢
作者: qq2501    时间: 2011-12-22 22:27

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

作者: zever    时间: 2011-12-23 20:58

太感谢了,还有一个问题, 我"拼"了一些语句 是收集电脑信息及网络情况并 把这些信息保存到文件 上传到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
作者: awk    时间: 2011-12-23 21:11

回复 7# zever


报错信息是什么?
作者: zever    时间: 2011-12-23 21:30

我是想把这所有信息保存到以(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"
作者: awk    时间: 2011-12-23 21:41

回复 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. )
复制代码

作者: zever    时间: 2011-12-23 21:49

还是一样,能不能用一个固定名字,再在后面改名,只是后面改名和上传怎样调用这个名字,不会
作者: awk    时间: 2011-12-23 22:17

回复 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及后面的内容
复制代码

作者: awk    时间: 2011-12-23 22:20

回复 9# zever


第五行里面的!x!,这个变量x根本没有定义过,你直接使用肯定出问题啊。
作者: zever    时间: 2011-12-23 22:22

还是多一个文件
作者: awk    时间: 2011-12-23 22:24

  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. ......
复制代码

作者: zever    时间: 2011-12-23 22:32

哦,这样呀,终于可以,太感谢了,利害




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