cmd.exe命令行字符串限制

时间:2009-08-14 12:24:08

标签: windows command-line

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

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

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

由于这会引发错误,是否有办法管理这种情况以增加命令长度?

P.S。有些路径+文件名的长度大于259个字符,我发现有less to argue

6 个答案:

答案 0 :(得分:4)

您可以使用 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参数释放关联。

答案 1 :(得分:1)

您可能需要考虑使用DBMS_FILE_TRANSFER.COPY_FILE而不是创建bat文件。您可以完全避免使用bat文件(与平台相关)。

答案 2 :(得分:1)

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

答案 3 :(得分:1)

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

如果没有这样做,你可以通过在使用cmd-escape char ^的换行符之前或通过将命令包装在括号中来中断命令。

答案 4 :(得分:0)

我不这么认为;我可以把它写成文件。

答案 5 :(得分:0)

可能不会,听起来像是在达到MAX_PATH限制。请参阅MSDN上的File Names, Paths, and Namespaces

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

根据以下文章Command prompt (Cmd. exe) command-line string limitation

  

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