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

1. 你的代码格式不好, 左圆括号有 12 个, 而右圆括号只有 11 个, 第一个 FOR 后面的循环体的左圆括号无配对的右圆号
2. 第一代码 @echo &setlocal ... echo 是没意义的, 要么 echo off, 要么 echo on
3. 多行语句输出到一个文件, 较之于 > 加 >> 的用法不如采用如下形式:
  1. >file (
  2.   statement
  3.   statement
  4.   statement
  5. )
复制代码
更多的分析, 你就自己看吧
  1. @echo &setlocal enabledelayedexpansion
  2. for /r F:\123 %%i in (*.txt) do (
  3.   set str=%%~ni
  4.   set str1=!str:~,-8!
  5.   set str2=%%i
  6.   for /f "tokens=3 delims=\" %%1 in ("!str2!") do set str2=%%1
  7.   if !str1!==onlinetimerecord (
  8.     echo use !str2!^;>456.sql
  9.     echo insert into onlinetimerecord^(PlayerID,AccountID,ClientType,OnlineTime,OfflineTime,LoginIP,DiamondLogin,DiamondLogoff^) values >>456.sql
  10.     for /f "delims=" %%a in ('more %%i') do echo ^(%%a^)^,>>456.sql
  11.     sed -i "$s/,$/;/" 456.sql
  12.   ) else (
  13.     if !str1!==gmoperationrecord (
  14.       echo use !str2!^;>456.sql
  15.       echo insert into gmoperation^(OperationTime,Operator,OperationCommand,Target^) values >>456.sql
  16.       for /f "delims=" %%a in ('more %%i') do echo ^(%%a^)^,>>456.sql
  17.       sed -i "$s/,$/;/" 456.sql
  18.     )
  19.     pause
  20.   )
复制代码
1

评分人数

TOP

本帖最后由 neorobin 于 2011-3-31 20:58 编辑

8# hucuibai
是被下面两行代码改变了工作路径的缘故:
  1. e:
  2. cd "Program Files\MySQL\MySQL Server 5.0\bin"
复制代码
改成这样的看看且这行代码放在批处理首部即可,不要放在循环里多次运行)
  1. path e:\Program Files\MySQL\MySQL Server 5.0\bin;%path%
复制代码

TOP

返回列表