找回密码
 注册
搜索
[新手上路]批处理新手入门导读[视频教程]批处理基础视频教程[视频教程]VBS基础视频教程[批处理精品]批处理版照片整理器
[批处理精品]纯批处理备份&还原驱动[批处理精品]CMD命令50条不能说的秘密[在线下载]第三方命令行工具[在线帮助]VBScript / JScript 在线参考
查看: 30978|回复: 13

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

[复制链接]
发表于 2012-11-19 15:21:24 | 显示全部楼层 |阅读模式
  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引用的不对,麻烦请教各位高手一下,应该要怎么写
发表于 2012-11-19 15:25:35 | 显示全部楼层
本帖最后由 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"
)
 楼主| 发表于 2012-11-19 15:27:46 | 显示全部楼层
回复 2# tmplinshi


    版主大人,你这个跟我的不是一样的么?不行耶
发表于 2012-11-19 15:28:23 | 显示全部楼层
回复 3# hucuibai


    不一样。看红色的双引号。
 楼主| 发表于 2012-11-19 15:32:03 | 显示全部楼层
回复 4# tmplinshi


    红色的双引号?是个什么符号?怎么打出来呢?
发表于 2012-11-19 15:33:21 | 显示全部楼层
回复 5# hucuibai


    二楼的代码比你顶楼的代码多了一个双引号。红色的那个。
 楼主| 发表于 2012-11-19 15:41:05 | 显示全部楼层
回复 6# tmplinshi


    哦 你是说我少用了个引号是吧,这个是我的错,没有用上去,但是问题不是这个问题,之前我都是用双引号引起来的,是不行的
 楼主| 发表于 2012-11-19 15:46:31 | 显示全部楼层
奇了怪了  我用more打开文件是可以的

more E:\bidumpDatabase\temp\dbfile\!dbname!*.sql
但是这句命令就不行,为什么呢
mysql -uroot -p123456 !dbname!<"E:\bidumpDatabase\temp\dbfile\!dbname!*.sql"
发表于 2012-11-19 15:49:09 | 显示全部楼层
你获取到得内容是什么??
有可能是你获取到得文件有问题.
你的分割符是 _ 不知道你的文件名中是不是有带 _ 有的话就会找不到文件.
 楼主| 发表于 2012-11-19 16:05:49 | 显示全部楼层
回复 9# jains521


    文件名内的确含有_下划线,有什么办法吗?
发表于 2012-11-19 16:35:37 | 显示全部楼层
假设.你要获取的文件名为 z:\\a_b c.xx 格式的.
for /f "delims=" %%i in ('dir xx..') do echo %%i
发表于 2012-11-19 16:36:59 | 显示全部楼层
假设.你要获取的文件名为 z:\\a_b c.xx 格式的.
for /f "delims=" %%i in ('dir xx..') do echo %%i
jains521 发表于 2012-11-19 16:35


很难理解.你用 _ 作为分割符是出于什么目的, 还有你要分割的东西是什么样的.
 楼主| 发表于 2012-11-19 17:04:04 | 显示全部楼层
回复 12# jains521


    文件名是ninja674_logdb.sql  ninja674是我要取的,作为数据库名称,后面用!dbname!*.sql是要找数据库所对应的数据库文件导入数据库,了解?
发表于 2012-11-19 17:44:19 | 显示全部楼层
文件名 xxx*.sql
还是.xxxxxx.sql
2者是有区别的.
第一个是通配的.就是带有xxx的多个文件
第二个是单个文件.
还有传递的文件. <xxx.sql 是必须单一的文件.
如果.路径表达不清楚.或者文件名含糊.都可能传递失败.
您需要登录后才可以回帖 登录 | 注册

本版积分规则

Archiver|手机版|小黑屋|批处理之家 ( 渝ICP备10000708号 )

GMT+8, 2026-3-19 17:51 , Processed in 0.020851 second(s), 8 queries , File On.

Powered by Discuz! X3.5

© 2001-2026 Discuz! Team.

快速回复 返回顶部 返回列表