标题: [文件操作] 批处理怎样用查找的内容为名创建文件? [打印本页]
作者: 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
这个和你的问题很像- @echo off
- for /f "usebackq tokens=2 delims=^=" %%a in (`findstr "shop1" set.ini`) do echo 店铺代码为%%a>%%a.txt
- 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 编辑
- @echo off
- 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
- echo, 处理器:>>%a%.txt
- for /f "usebackq tokens=1,2* delims=:" %%i in (`systeminfo`) do echo,%%j | findstr "x86" >>%a%.txt
- 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
这样创建文件试试:- @echo off
- if exist C:\Xr-V6Before\dblogin.ini (
- set "fileini=C:\Xr-V6Before\dblogin.ini"
- ) else (
- set "fileini=D:\Xr-V6Before\dblogin.ini"
- )
- for /f "tokens=2 delims==" %%x in ('findstr "LocalStore" "%fileini%"') do (
- if "%%x" neq "" (
- >%%x.txt echo 店铺代码为%%x
- )
- )
复制代码
作者: zever 时间: 2011-12-23 21:49
还是一样,能不能用一个固定名字,再在后面改名,只是后面改名和上传怎样调用这个名字,不会
作者: awk 时间: 2011-12-23 22:17
回复 11# zever
这样呢?- @echo off
- if exist C:\Xr-V6Before\dblogin.ini (
- set "fileini=C:\Xr-V6Before\dblogin.ini"
- ) else (
- set "fileini=D:\Xr-V6Before\dblogin.ini"
- )
- for /f "tokens=2 delims==" %%x in ('type "%fileini%" ^| findstr "LocalStore"') do (
- if "%%x" neq "" (
- >%%x.txt echo 店铺代码为%%x
- goto :next
- )
- )
-
- :next
- 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
- @echo off
- if exist C:\Xr-V6Before\dblogin.ini (
- set "fileini=C:\Xr-V6Before\dblogin.ini"
- ) else (
- set "fileini=D:\Xr-V6Before\dblogin.ini"
- )
- for /f "tokens=2 delims==" %%x in ('findstr "LocalStore" "%fileini%"') do (
- if "%%x" neq "" (
- >%%x.txt echo 店铺代码为%%x
- rem for循环里面的控制变量%%x的作用域仅限于循环内部
- rem 后面的变量x需要自己定义一下才行
- set "x=%%x"
- )
- )
- setlocal enabledelayedexpansion
- echo 当前时间及本机IP地址:>>!x!.txt
- ......
复制代码
作者: zever 时间: 2011-12-23 22:32
哦,这样呀,终于可以,太感谢了,利害
欢迎光临 批处理之家 (http://bbs.bathome.net/) |
Powered by Discuz! 7.2 |