我一直工作在後臺從Oracle查詢會從一個位置複製到另一個內容的bat文件,CMD.EXE命令行字符串限制
現在越來越產生的命令是長是的超過255個字符,如
C:> copy x y (where len (x+y) > 255)
由於這是拋出一個錯誤,有一個變通來管理這種情況,以增加命令長度?
P.S.有些路徑+文件名的長度大於259個字符,我發現這裏有less to argue
我一直工作在後臺從Oracle查詢會從一個位置複製到另一個內容的bat文件,CMD.EXE命令行字符串限制
現在越來越產生的命令是長是的超過255個字符,如
C:> copy x y (where len (x+y) > 255)
由於這是拋出一個錯誤,有一個變通來管理這種情況,以增加命令長度?
P.S.有些路徑+文件名的長度大於259個字符,我發現這裏有less to argue
您可以使用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參數釋放關聯。
可能不是,聽起來像是碰到了MAX_PATH
限制。請參閱MSDN上的File Names, Paths, and Namespaces。
可能的解決方法可能是使用短路徑等價物,例如, C:\Progra~1
。
按照下面的文章,
在運行Microsoft Windows XP或更高版本的計算機,你可以在命令提示符下使用該字符串的最大長度爲8191個字符。在運行Microsoft Windows 2000或Windows NT 4.0的計算機上,可以在命令提示符處使用的最大字符串長度爲2047個字符。
您可能要考慮使用DBMS_FILE_TRANSFER.COPY_FILE而不是創建bat文件。你可以避免使用bat文件(這是平臺相關的)。
嘗試使用.cmd文件,而不是一個.bat文件,除非你正在使用的Win95/98/ME。這可以解決整個問題。
如果這樣做不行,可以通過在cmd-escape char ^之前換行來破壞命令,或者將命令包裝在括號中。
嗨Ralph,您的解決方案工作正常..謝謝....但唯一的問題我所知道的是,任何超過256個字符的東西,命令行都沒有,(我使用的是2000服務器),這會讓解決方案變得更簡單。 – 81967 2009-08-14 13:49:24