iT邦幫忙

0

bat在UNC中批次處理檔案

esc902 2013-05-20 21:53:5111609 瀏覽
  • 分享至 

  • xImage

是這樣的,我需要在網路硬碟作檔案的批次處理,
bat好像在網路上的芳鄰這種UNC目錄下不支援,
google到的解決辦法有用net use
我的bat code如下:
--------------------start-------------------
@echo off
net use Z: \\route
for %%i in (*) do echo %%i >>M01.txt
net use /delete Z: \\rout
pause
--------------------end---------------------
有關UNC的錯誤訊息消失了,但出現如下的錯誤訊息

系統發生85錯誤
本機裝置名稱已在使用中

請問這是什麼情況?要怎麼解決呢?

先確認 Z: 有沒有被用?

net use Z: \\route


\\route 是電腦名稱,還是已經分享的目錄?疑惑

如果是電腦名稱,應該還要有備分享的目錄,或是磁碟機
net use Z: \\computer_name\folder_name

圖片
  直播研討會
圖片
{{ item.channelVendor }} {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

2 個回答

12
蟹老闆
iT邦大師 1 級 ‧ 2013-05-21 04:39:46
最佳解答

底下有二種方式請擇一使用

<pre class="c" name="code">
Set UncPath=\\主機名稱\路徑\
net use %UncPath% /user:帳號 密碼  <--假設連線至該分享主機不需帳密或帳密已儲存這行不可使用
------------------------------------------------------------------------------
如果只要取得檔案名稱使用下列方式
------------------------------------------------------------------------------
FOR %%I IN (A B C D E F G H I J K L M N O P Q R S T U V W X Y Z) DO (
SUBST %%I: "%UncPath%"&&%%I:&&For %%i in (*) do echo %%i >>%~dp0M01.txt&&%~d0&&SUBST /D %%I:&&GOTO :EXIT
)
:EXIT
之後的命令

------------------------------------------------------------------------------
如果要取得路徑加檔名使用下列方式
------------------------------------------------------------------------------
For %%i in (%UncPath%*) do echo %%i >>M01.txt
之後的命令

說明:
這個批次會由A至Z檢查哪個代號未被使用,之後會使用第一個被找到的空代號來連結

系統發生85錯誤

你的Z槽已被佔用所以會出現85錯誤

8
海綿寶寶
iT邦大神 1 級 ‧ 2013-05-21 11:09:08

雖然我看不太懂這個批次檔
Z: 和 for %%i 有什麼關聯性

不過只針對「本機裝置名稱已在使用中」的話
我會把批次檔改成這樣
算是頭痛醫頭的方法

<pre class="c" name="code">
@echo off
net use /delete Z: \\rout
net use Z: \\route
for %%i in (*) do echo %%i >>M01.txt
pause

我要發表回答

立即登入回答