虽然以下的方法也可以解决,不过最简单直接的,还是直接在路径前后加双引号-" ",这个方法简单有效。

首先要说明的是mysqldump.exe在哪里不重要,重要的是要处理好路径中的非法字符。

比如:我的mysqldump.exe的位置在本地的

C:\Program Files\Apache Software Foundation\Tomcat .\webapps\ui\WEB-INF\data\test

直接调用肯定是不行的,因为路径中有空格。
解决方法是把空格换成

C:/Progra~/Apache~/Tomcat~./webapps/ui/WEB-INF/data/mau

的样子。

这里分两种情况:
1、Program Files、Apache Software Foundation
类似这种的直接保留前六个字母,再加“~1”就行了
2、Tomcat 6.0 、tomcattomcat 6.0、tom 6.0、to 6.0
这个需要保留“.0”,最终换成Tomcat~1.0 、Tomcat~1.0 、tom6~1.0、to6~1.0
规律一看都能看明白。

最终处理结果如下:

C:/Progra~/Apache~/Tomcat~./webapps/ui/WEB-INF/data/test/mysqldump.exe ...

其实以上就是所谓的DOS 8.3格式文件名规范。

所谓8.3格式短文件名规范,就是型如 PROGRA~1(目录)或者元素周~1.exe(文件)这样的名称——

“8”是指文件名或目录名的主体部分小于等于8个字节;

“3”是指文件名的扩展名部分小于等于3个字节。

另外还有一点,就是8.3文件名的有效字符不包括空格等特殊字符。

8.3短文件名格式规范是DOS+FAT12/FAT16时代遗留下的老规矩,自从Windows95开始(其实据说从Windows for Groups 3.11开始),Windows就已经能支持长文件名,但是为了向前兼容,特别是文件系统兼容性,FAT文件系统均强制执行“为长文件名提供8.3兼容格式的短文件名”的特性。

因此你会看到,在FAT16/32文件系统上:目录"program files"同时还拥有一个8.3规范的"PROGRA~1"短名称;而文件"元素周期表.exe"也同时拥有一个"元素周~1.exe"的短名称。[这有一点像类UNIX系统下的hardlink,一个对象拥有两个引用方式。]

PS:知道为什么IE浏览器的主程序叫做iexplore.exe 而不是iexplorer么?就是为了照顾8.3短文件名规范。

===================NTFS文件系统与8.3格式规范的兼容性===================

NTFS文件系统支持unicode(UTF16)字符集文件名,最长达255个UTF16字符,因此NTFS文件系统以及基于unicode字符集的32位NT内核Windows操作系统本身都没有必要遵循16位DOS时代遗留的8.3格式短文件名规范。

但还是为了兼容性,NTFS文件系统也提供了一个可选的特性:8.3兼容格式。Windows中这个特性默认是on,也就是说每当建立一个长文件名的对象的同时,系统的NTFS驱动模块会自动建立一个合适的8.3格式短名称指向这个对象。

需要指出的是,这个特性并不像FAT文件系统中那样是强制执行的,因此不同的磁盘实用程序或者操作系统可能有不同的执行方式——

比如windowsXP中可以用 fsutil behavior set disable8dot3 1 命令关闭,驱动模块关闭这一特性后就不会每次都额外地建立一个附加的短名称,这样在新建/重命名大量小文件/目录的时候能略微提升磁盘的写入速度,(不用计算出一个合适的短文件名,也不用把这个额外的信息写入磁盘)。

=================非win32标准的老程序兼容性依赖8.3规范=================

但是,关闭这一特性之后可能导致某些古老的应用程序出现兼容性问题,这些程序虽说是32位GUI界面的“windows应用程序”,却不完全遵循win32程序的规范,而是通常混合有16位API,使用8.3格式短名称来引用文件。很显然,如果在一个NTFS分区上根本就不为长文件名提供短名称,那么这些16/32位混合型老程序将无法用8.3格式短名称来找到文件,当然会出错……但是事情并不总是这么简单的——

最近我发现有几个老的应用程序不能正常启动,这包括曾经在科大校园网上非常流行的科技大词典(主程序 ncce_win.exe,怎么样,熟悉不?)细查原因,似乎只是放在NTFS分区才会出问题,移到FAT32的U盘上没问题。后来我惊讶的发现:把U盘格成NTFS再放上这个程序也没问题!…… ……

数小时后,真正的的原因被找到了,说起来非常复杂,简而言之:全路径上有一级目录不兼容短文件名格式,因此主程序找不到相关文件!

为什么会有一级目录不兼容8.3规范呢?

因为我的硬盘是在以前的硬盘出故障后新换的,换上来之前,我在一个64位windows操作系统上把旧硬盘上还能读出的目录一一复制过来,而那个64位windows关闭了NTFS的8.3兼容特性,复制来的目录和文件都不具备附加的短名称,特别是我放应用程序的E:\program files\目录。(64位windows理论上是完全不支持16位和16/32位混合程序的,因此可能默认就关闭了NTFS驱动的8.3兼容性,或者也许是什么优化程序关闭的。)

然后我用GHOST恢复了系统分区,恢复的32位winXP并没有关闭8.3兼容性,但关键问题是已经写入NTFS分区的(不具备短名称的)目录和文件并不会被这个32位XP重建短文件名,系统只会对新建的文件或目录附加8.3文件名,至于原先已经建立好的目录和文件,即使是重命名这种操作,也无法“提醒”XP检查并追加上一个短文件名——这一点让我百思不得其解。

于是,当我把软件放在E:\program files\的子目录中时,虽然子目录“科技词典”,以及ncce_win.exe等文件名都符合8.3规范,但是全路径上有一个“program files”是不符合8.3规范的,并且没有等效的短名称代替,所以某个API就无法用“E:\progra~1\科技词典\xxxxxxxx.xxx”定位文件了,这个程序当然无法正常启动。

-----------------------与8.3兼容名称相关的一些命令-----------------------

fsutil behavior query disable8dot3    检查NTFS驱动是否开启8.3兼容特性

fsutil behavior set disable8dot3 1    关闭8.3兼容特性

fsutil behavior set disable8dot3 0    开启8.3兼容特性

fsutil file setshortname <longname> <8.3name>  手工指定一个8.3短名称

dir /x   列出当前目录的子目录和文件,以及相应的8.3兼容名称(如果有的话)

---------------------------------------------------------------------------------------------------------

Windows 关闭、开启短文件名功能:

打开注册表,找到:HKLM\SYSTEM\CurrentControlSet\Control\FileSystem

将 NtfsDisable8dot3NameCreation 的值设为 1,也就是不创建短文件名,具体含义如下:

0    NTFS creates short file names. This setting enables applications that cannot process long file names and computers that use different code pages to find the files.

1    NTFS does not create short file names. Although this setting increases file performance, applications that cannot process long file names and computers that use different code pages might not be able to find the files.

---------------------------------------------------------------------------------------------------------

GetShortPathName 得到长文件名对应的8.3格式的短文件名
 
当Windows进入长文件名时代,因此dos时代的8.3格式文件命就派不上用了, 但是有些时候8.3格式文件名却很有用,例如当一个word的文件名有空格时,要用shell的方式打开word文件时,word就把文件名当中的空格截掉,导致文件打开会失败,解決方法就是用GetShortPathName讲长文件名转换为短文件名。
 
例如:
GetShortPathName (L"C:\\Documents and Settings\\All Users", szOut,  sizeof(szOut));
返回C:\DOCUME~1\ALLUSE~1

具体说明在:http://technet.microsoft.com/en-us/library/cc959352.aspx

mysqldump备份、还原数据库路径名含有空格的处理方法(如:Program Files)的更多相关文章

  1. [转]mysqldump备份还原和mysqldump导入导出语句大全详解

    FROM : http://www.cnblogs.com/zeroone/archive/2010/05/11/1732834.html mysqldump备份还原和mysqldump导入导出语句大 ...

  2. SQL点滴12—SQL Server备份还原数据库中的小把戏

    原文:SQL点滴12-SQL Server备份还原数据库中的小把戏 备份数据库时出现一个不太了解的错误 ,错误信息“is formatted to support  1 media families, ...

  3. 如何使用T-SQL备份还原数据库及c#如何调用执行? C#中索引器的作用和实现。 jquery控制元素的隐藏和显示的几种方法。 localStorage、sessionStorage用法总结 在AspNetCore中扩展Log系列 - 介绍开源类库的使用(一) span<T>之高性能字符串操作实测

    如何使用T-SQL备份还原数据库及c#如何调用执行? 准备材料:Microsoft SQL Server一部.需要还原的bak文件一只 一.备份 数据库备份语句:user master backup ...

  4. SQL 数据库 学习 005 学习必备的一些操作 --- 如何新建数据库 如何附加和分离数据库(如何备份还原数据库) 如何删除数据库

    我的电脑系统: Windows 10 64位 使用的SQL Server软件: SQL Server 2014 Express 如果我们要学习这个数据库,我们需要学习什么知识.比如:如何新建一个数据库 ...

  5. WinForm c# 备份 还原 数据库(Yc那些事儿 转)

    Yc那些事儿 我愿意 为了我的幸福 奋斗终生     2008-11-17 18:04 WinForm c# 备份 还原 数据库 其实是个非常简单的问题,一个Form,一个Button,一个OpenF ...

  6. 【摘】Mysql备份还原数据库之mysqldump实例及参数详细说明

    原文http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html   我们在运营项目的过程中肯定会遇到备份数据库,还原数据库的情况,我们一 ...

  7. Mysql备份还原数据库之mysqldump实例及参数详细说明

    [root@localhost myexport]# mysqldump -h211.100.75.204 -uroot -p@^#coopen -P5029 --single-transaction ...

  8. (转)Mysql备份还原数据库之mysqldump实例及参数详细说明

    http://www.xuejiehome.com/blfl-2.html http://www.cnblogs.com/xuejie/archive/2013/01/11/2856911.html ...

  9. Using mysqldump for Backups(备份还原数据库实例及参数详细说明)

    官网mysqldump命令如下: Using mysqldump for Backups https://dev.mysql.com/doc/refman/5.7/en/using-mysqldump ...

随机推荐

  1. js对ajax返回数组的处理

    引言: ajax异步传输,可以传输字符串,但是数组这样的数据,就不太好传递了,这个时候怎么办呢? 答案是可以通过json来处理,后台将数据数据进行json编码! 然后客户端,通过js来进行解析. 这样 ...

  2. MonkeyRunner 连续两次点击报“Error sending touch event”

    最近用monkeyrunner做自动化测试,遇到连续两次点击,第二次点击就会报错“Error sending touch event”. 具体做法如下: device.touch(234,112, ' ...

  3. 查找IP来源

    通过调用淘宝IP库获取IP归属地,脚本如下: #!/usr/bin/env python # -*- coding: utf-8 -*- import urllib import json impor ...

  4. asp.net生成二维码的方法

    asp.net生成二维码的方法 [复制链接]     这个要利用一个Dll文件. 如下 Gma.QrCodeNet.Encoding.dll (105.5 KB, 下载次数: 27) 当然大家也可以直 ...

  5. JAVA中ProcessBuilder执行cmd命令找不到路径的解决方法

    今天遇到了一个很奇葩的问题,终于解决了,记一下,以做备忘. 前提条件:工程路径在D盘下 cmd要执行的可执行文件路径不在D盘下 然后...出事了............................ ...

  6. [2013 ACM/ICPC Asia Regional Nanjing Online C][hdu 4750]Count The Pairs(kruskal + 二分)

    http://acm.hdu.edu.cn/showproblem.php?pid=4750 题意: 定义f(u,v)为u到v每条路径上的最大边的最小值..现在有一些询问..问f(u,v)>=t ...

  7. Redis教程02——管道(Pipelining)

    请求/响应协议和RTT Redis是一个使用客户端/服务器模型(也被称作请求/响应协议)的TCP服务器. 这说明通常来讲一个一个请求的实现有以下步骤: 客户端发送请求到服务器,并从socket中以堵塞 ...

  8. 【Android - 框架】之Retrofit的使用

    Retrofit是Square公司发布的一个可以应用在Android和Java中的Http客户端访问框架,其底层应用的是OkHttp. 在这个帖子中,我们以下面这个Http请求为例: https:// ...

  9. jQuery 实现上下,左右滑动

    前几天的任务:http://t.sina.com.cn/  的下滑效果. 渐变移动出足够的空白 -> 淡出最后一个 ->渐变移动出足够的空白 我们要做的是向左移动效果.这个效果用时需添加一 ...

  10. SpringMVC ModelAndView方法与模板传参接收不到问题

    最近在使用Spring MVC做项目时,碰到一个问题,就是通过ModelAndView与前端模板页面通信时,一直无法在模板中显示出来传过去的参数值. 在网上也查了好久,就是不知道是啥问题,很是郁闷. ...