繁体   English   中英

cmd.exe命令行字符串限制

[英]cmd.exe command line string limits

我一直在尝试从oracle查询中后台处理bat文件,该文件会将内容从一个位置复制到另一个位置,

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

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

由于这会引发错误,是否可以解决这种情况以增加命令长度?

PS一些路径和文件名的长度大于259个字符,对此我发现说的很少

您可以使用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中运行命令提示符):复制\\?\\ c:\\ verylongpath \\ verylongname \\?\\ d:\\ anotherverylongpath \\

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

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

我不这么认为; 我可能会将其写入文件。

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

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

根据以下文章命令提示符(Cmd。exe)命令行字符串限制

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM