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

[文本处理] 批处理怎样引用变量的文件名?

  1. for /f "tokens=1 delims=_" %%a in ('dir /b "E:\bidumpDatabase\temp\dbfile"') do (
  2. set dbname=%%a
  3.         echo 导入!dbname!
  4. mysql -uroot -p123456 -e "drop database if exists !dbname!;create database !dbname!"
  5. mysql -uroot -p123456 !dbname!<"E:\bidumpDatabase\temp\dbfile\!dbname!*.sql
  6. )
复制代码
以上代码提示文件名、目录名或卷标语法不正确。

应该是!dbname!*.sql引用的不对,麻烦请教各位高手一下,应该要怎么写

本帖最后由 tmplinshi 于 2012-11-19 15:27 编辑
for /f "tokens=1 delims=_" %%a in ('dir /b "E:\bidumpDatabase\temp\dbfile"') do (
        set dbname=%%a
        echo 导入!dbname!
        mysql -uroot -p123456 -e "drop database if exists !dbname!;create database !dbname!"
        mysql -uroot -p123456 !dbname!<"E:\bidumpDatabase\temp\dbfile\!dbname!*.sql"
)

TOP

回复 2# tmplinshi


    版主大人,你这个跟我的不是一样的么?不行耶

TOP

回复 3# hucuibai


    不一样。看红色的双引号。

TOP

回复 4# tmplinshi


    红色的双引号?是个什么符号?怎么打出来呢?

TOP

回复 5# hucuibai


    二楼的代码比你顶楼的代码多了一个双引号。红色的那个。

TOP

回复 6# tmplinshi


    哦 你是说我少用了个引号是吧,这个是我的错,没有用上去,但是问题不是这个问题,之前我都是用双引号引起来的,是不行的

TOP

奇了怪了  我用more打开文件是可以的

more E:\bidumpDatabase\temp\dbfile\!dbname!*.sql
但是这句命令就不行,为什么呢
mysql -uroot -p123456 !dbname!<"E:\bidumpDatabase\temp\dbfile\!dbname!*.sql"

TOP

你获取到得内容是什么??
有可能是你获取到得文件有问题.
你的分割符是 _ 不知道你的文件名中是不是有带 _ 有的话就会找不到文件.
非常批处理3群:56794763
有偿写程序.
批处理, lua, c, c++, vba, php, css

TOP

回复 9# jains521


    文件名内的确含有_下划线,有什么办法吗?

TOP

假设.你要获取的文件名为 z:\\a_b c.xx 格式的.
for /f "delims=" %%i in ('dir xx..') do echo %%i
非常批处理3群:56794763
有偿写程序.
批处理, lua, c, c++, vba, php, css

TOP

假设.你要获取的文件名为 z:\\a_b c.xx 格式的.
for /f "delims=" %%i in ('dir xx..') do echo %%i
jains521 发表于 2012-11-19 16:35


很难理解.你用 _ 作为分割符是出于什么目的, 还有你要分割的东西是什么样的.
非常批处理3群:56794763
有偿写程序.
批处理, lua, c, c++, vba, php, css

TOP

回复 12# jains521


    文件名是ninja674_logdb.sql  ninja674是我要取的,作为数据库名称,后面用!dbname!*.sql是要找数据库所对应的数据库文件导入数据库,了解?

TOP

文件名 xxx*.sql
还是.xxxxxx.sql
2者是有区别的.
第一个是通配的.就是带有xxx的多个文件
第二个是单个文件.
还有传递的文件. <xxx.sql 是必须单一的文件.
如果.路径表达不清楚.或者文件名含糊.都可能传递失败.
非常批处理3群:56794763
有偿写程序.
批处理, lua, c, c++, vba, php, css

TOP

返回列表