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

[文件操作] 获取磁盘信息并转化成SQL的批处理有什么问题吗? 为什么会报错呢。

报错信息
D:\>pause
请按任意键继续. . .
此时不应有 VALUES('tsgammadb1'。

D:\>echo insert into ADMIN.WIN_DISK_INFO(HOSTNAME,DISK_NAME,TOTAL,AVAIL,USAGE) V
ALUES('tsgammadb1',x,%j,%k,%l);
  1. setlocal enabledelayedexpansion
  2. set t=1    1
  3. set t=%t:~1,1%
  4. echo 盘符    总量    剩余量    未用率    使用率>磁盘信息.txt
  5. wmic logicaldisk where drivetype=3 get caption,freespace,size>d.txt
  6. (for /f "skip=1 tokens=1-3" %%i in ('type d.txt') do (
  7. set s=%%k
  8. set /a s=!s:~,-3!/1024/1024
  9. set f=%%j
  10. set /a f=!f:~,-3!/1024/1024
  11. set /a wyl=100*!f!/!s!
  12. set /a syl=100-wyl
  13. echo %%i,!s!,!f!,!syl!
  14. ))>>d:\disk.txt
  15. del d.txt
  16. pause
  17. for /f "delims=, tokens=1-4" %%i in ('d:\disk.txt') do (
  18. pause
  19. set x='%%i'
  20. pause
  21. echo insert%t%into%t%ADMIN.WIN_DISK_INFO(HOSTNAME,DISK_NAME,TOTAL,AVAIL,USAGE)%t%VALUES('tsgammadb1',x,%%j,%%k,%%l);
  22. pause
  23. )>>d:\disk2.txt
  24. pause
复制代码

本帖最后由 xxpinqz 于 2015-5-8 12:09 编辑

回复 5# wwjfeng2015
独立出来要加
  1. setlocal enabledelayedexpansion
  2. (for /f "delims=, tokens=1-4" %%i in ('type disk.txt') do (
  3. set x='%%i'
  4. echo insert into ADMIN.WIN_DISK_INFO(HOSTNAME,DISK_NAME,TOTAL,AVAIL,USAGE^) VALUES('tsgammadb1',x,%%j,%%k,%%l^);
  5. ))>>d:\disk2.txt
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 4# xxpinqz

还是不行,输出是这样的。
    insert into ADMIN.WIN_DISK_INFO(HOSTNAME,DISK_NAME,TOTAL,AVAIL,USAGE) VALUES('tsgammadb1',!x!,99,61,39);

TOP

  1. !x!
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

回复 2# xxpinqz


    感谢大神帮助,小弟还有个问题 在输出的disk2.txt 中 变量x 没有显示它的值。 应该如何写在echo中的x呢?“VALUES('tsgammadb1',x,%%j,%%k,%%l^);



(for /f "delims=, tokens=1-4" %%i in ('type disk.txt') do (
set x='%%i'
echo insert into ADMIN.WIN_DISK_INFO(HOSTNAME,DISK_NAME,TOTAL,AVAIL,USAGE^) VALUES('tsgammadb1',x,%%j,%%k,%%l^);
))>>d:\disk2.txt

TOP

)括号要加上^
  1. ,USAGE^)%t%VALUES('tsgammadb1',x,%%j,%%k,%%l^);
复制代码
初学BAT,非专业。代码不适当之处还望前辈们多多指点。在此表示感谢!

TOP

返回列表