cmd.exe命令行string限制

我一直在努力从oracle查询中打印一个bat文件,将内容从一个位置复制到另一个位置,

现在正在生成的命令的长度大于255个字符,例如

C:> copy xy ( where len (x+y) > 255) 

由于这是一个错误,有没有一个办法来处理这种情况来增加那个命令的长度呢?

PS一些path+文件名的长度大于259个字符,我发现说有更less的争论

你可以使用subst来命名你使用驱动器号的两个子目录。 显然这不是真实的,但逻辑驱动器,然而,你可以大大缩短路径。

 LASTDRIVE=Z SUBST S: c:\this is a very long path name\source SUBST T: d:\this is a very long path name\Target #do whatever you need to, like copy s:\filename T:\filename SUBST S: /D SUBST T: /D 

/ D参数释放关联。

您可能要考虑使用DBMS_FILE_TRANSFER.COPY_FILE而不是创建一个bat文件。 你可以避免使用bat文件(这是平台相关的)。

  1. SUBST(已经提出)
  2. 使用8.3表示法(例如C:\ Progra〜1 \ – 也被提议)
  3. 使用此语法(如果在Windows中运行命令提示符):copy \?\ c:\ verylongpath \ verylongname \?\ d:\ anotherverylongpath \

尝试使用.cmd文件,而不是.bat文件,除非您使用Win95 / 98 / ME。 这可以解决整个问题。

如果那样做不行,你可以通过在cmd-escape char ^之前换行来破坏命令,或者把命令放在括号中。

我不这么认为; 我会写到一个文件也许。

可能不是,听起来像是你正在达到MAX_PATH限制。 请参阅MSDN上的文件名,路径和命名空间 。

可能的解决方法可能是使用短路径等价物,例如C:\Progra~1

根据下面的命令提示符(Cmd.exe)命令行字符串的限制 ,

在运行Microsoft Windows XP或更高版本的计算机上,可以在命令提示符处使用的最大字符串长度为8191个字符。 在运行Microsoft Windows 2000或Windows NT 4.0的计算机上,可以在命令提示符下使用的最大字符串长度为2047个字符。