• 週二. 2 月 17th, 2026

天南訊息

IT 工作者的工作紀錄

判斷 區域 網路 路徑 連線狀態

個人頭像照片

By伍芳左

1 月 25, 2026

我有個 路徑 Q:\\KIIN_A 我想 判斷 Q:路徑是否存 或是 Q:存在 但是 不通 . 一個 BAT 檔

這是一個在網管或自動化腳本中很常見的需求。通常我們不只要看「磁碟代號是否存在」,還要看「資料夾是否可以讀取」。

你可以使用 IF EXIST 配合 DIR 命令來達成。DIR 命令的優點是:如果網路斷線或權限不足,它會回傳錯誤代碼(ErrorLevel),這能幫我們區分「路徑不存在」與「路徑不通」。

判斷腳本 (CheckPath.bat)

你可以將以下代碼複製到記事本,存成 .bat 檔:

程式碼片段

@echo off
set "targetPath=Q:\KIIN_A"

:: 1. 先判斷基本的路徑是否存在
if not exist "%targetPath%" (
    echo [狀態] 錯誤:路徑 %targetPath% 不存在 (可能是磁碟未掛載)。
    goto :end
)

:: 2. 如果路徑存在,嘗試讀取內容以確認是否「通暢」
dir "%targetPath%" >nul 2>&1

if %errorlevel% equ 0 (
    echo [狀態] 正常:%targetPath% 存在且連線正常。
) else (
    echo [狀態] 錯誤:%targetPath% 存在,但目前無法存取 (可能是網路中斷或權限問題)。
)

:end
pause

代碼邏輯說明

  • if not exist "%targetPath%": 這是第一道防線。如果 Q 槽根本沒掛載,或者該資料夾被刪除了,會直接偵測到。

  • dir "%targetPath%" >nul 2>&1:

    • 我們實際「下一個指令」去存取該路徑。

    • >nul 2>&1 是為了讓畫面乾淨,不顯示檔案列表或系統錯誤訊息。

  • %errorlevel%:

    • 如果 dir 成功,值會是 0

    • 如果路徑雖然在,但因為網路斷線、伺服器沒回應或權限被拒絕,dir 會失敗,值就不會是 0


進階建議

如果你是在處理網路磁碟機,有時候磁碟會顯示為「已斷線的網路磁碟機」,這時 IF EXIST 可能會失效。在這種情況下,使用 pushd 也是一個很好的替代方案:

程式碼片段

pushd "Q:\KIIN_A" 2>nul
if %errorlevel% equ 0 (
    echo 連線成功
    popd
) else (
    echo 連線失敗
)

需要我幫你修改這個腳本,讓它在斷線時自動嘗試重新連接(net use)嗎?

dbase 2019 的語法 行嗎 ?

如果你是指在 dBase (或是其後續版本 如 dBASE PLUS 2019) 的環境中執行判斷,語法會與 Windows 的 BAT 檔完全不同。dBase 使用的是它自己的程式語言(dBL)。

在 dBase 中,我們通常使用 DIRECTORY() 函數來判斷路徑,並配合 FILE() 或嘗試存取來確認是否「通」。

dBase (dBL) 範例程式碼

你可以參考以下邏輯編寫你的 .prg 檔案:

程式碼片段

local cPath
cPath = "Q:\KIIN_A\"

// 1. 檢查目錄是否存在
if .not. isDirectory(cPath)
    msgbox("錯誤:路徑 " + cPath + " 不存在(磁碟未掛載或資料夾已刪除)。", "檢查結果")
else
    // 2. 目錄存在,嘗試讀取內容以確認連線是否正常
    try
        local aFiles
        aFiles = directory(cPath + "*.*") // 嘗試獲取檔案列表
        msgbox("狀態:正常," + cPath + " 連線通暢。", "檢查結果")
    catch (Exception e)
        msgbox("錯誤:路徑存在但無法存取(可能是網路斷線或權限不足)。", "檢查結果")
    endtry
endif

關鍵指令說明

  • isDirectory("Q:\KIIN_A\"): 這是最直接判斷資料夾是否存在的方法。

  • try...catch 區塊: 這是處理「不通」的最強方法。當 Q 槽雖然在,但網路斷掉時,任何讀取動作(如 directory())都會拋出系統錯誤。使用 try 攔截錯誤,就不會導致程式直接崩潰當機。

  • directory(): 在此處不是為了列出檔案,而是為了觸發一次實體存取。

如果你是要在 dBase 裡面呼叫 BAT 檔

如果你已經寫好了 BAT 檔,想從 dBase 裡面執行它,可以使用 run 指令:

程式碼片段

run("C:\path_to_your_script\check_path.bat")

請問你是要在 dBase 的程式內部(.prg)做自動化處理,還是只需要一個獨立的工具來檢查環境?

我需要一個 傳回直 判斷用

既然你需要一個傳回值 (Return Code / ErrorLevel) 供後續程式判斷,最理想的做法是讓腳本根據不同情況結束於特定的 EXIT /B 代碼。

以下是優化後的 BAT 檔,它會回傳 0 (正常)1 (完全不存在) 或 2 (路徑在但不通)

1. 邏輯完整的 BAT 腳本

你可以將此內容存為 CheckPath.bat

程式碼片段

@echo off
set "targetPath=Q:\KIIN_A"

:: 檢查路徑是否存在 (磁碟沒掛載或資料夾不存在)
if not exist "%targetPath%" (
    exit /b 1
)

:: 路徑存在,嘗試讀取內容以確認是否「通暢」
:: 使用 dir 指令測試,若逾時或網路中斷會失敗
dir "%targetPath%" >nul 2>&1

if %errorlevel% equ 0 (
    :: 成功讀取
    exit /b 0
) else (
    :: 路徑在但無法讀取 (網路斷線/讀取逾時/權限拒絕)
    exit /b 2
)

2. 如何在 dBase 2019 或其他程式中判斷?

當你在 dBase 或另一個批次檔呼叫這個 CheckPath.bat 後,透過檢查 ErrorLevel 來執行不同動作:

在另一個 BAT 檔中使用:

程式碼片段

call CheckPath.bat
set result=%errorlevel%

if %result% equ 0 echo 狀態:連線正常
if %result% equ 1 echo 狀態:路徑完全不存在
if %result% equ 2 echo 狀態:路徑存在但連線中斷

在 dBase 2019 (dBL) 中使用:

你可以利用 ShellExecute 或 run() 指令後取得作業系統的結束代碼(註:dBase 的 run() 函式通常會回傳該程式的結束代碼)。

程式碼片段

local nResult
nResult = run("CheckPath.bat")

do case
    case nResult == 0
        ? "連線成功"
    case nResult == 1
        ? "路徑不存在"
    case nResult == 2
        ? "路徑存在但無法存取 (不通)"
endcase

傳回值定義表

傳回值 (ErrorLevel) 意義 建議處理方式
0 正常 (Success) 繼續執行 dBase 資料操作
1 不存在 (Not Found) 提醒使用者掛載 Q 槽
2 不通 (Access Denied / Timeout) 檢查網路連線或伺服器狀態

你需要我幫你把這個邏輯直接整合進 dBase 的 .prg 程式碼中(不透過外掛 BAT),還是目前這樣分開處理比較符合你的需求?

既然確定採用 BAT 傳回值 (ErrorLevel) 的方式,我將腳本整理得更簡潔且專業,方便你直接在 dBase 2019 中調用。

最終版:CheckPath.bat

這個版本專門為「傳回值」設計,不包含 pause,適合讓程式自動讀取。

程式碼片段

@echo off
set "targetPath=Q:\KIIN_A"

:: 檢查一:路徑是否完全不存在 (1)
if not exist "%targetPath%" exit /b 1

:: 檢查二:嘗試讀取檔案清單以確認「通不通」
:: 如果網路磁碟機已斷開或伺服器無回應,此處會失敗
dir "%targetPath%" >nul 2>&1

if %errorlevel% neq 0 (
    :: 路徑存在但讀取失敗 (2)
    exit /b 2
)

:: 通過所有檢查 (0)
exit /b 0

在 dBase 2019 (dBL) 中接收傳回值

在 dBase 中,你可以使用 RUN() 或 _shell() 函數。最穩定獲取 ErrorLevel 的方法如下:

程式碼片段

// 定義變數接收結果
local nStatus
nStatus = run("CheckPath.bat")

// 根據傳回值進行判斷
do case
    case nStatus == 0
        // 正常:可以進行資料庫索引或讀取
        use Q:\KIIN_A\your_table.dbf
        
    case nStatus == 1
        msgbox("找不到 Q:\KIIN_A 路徑,請確認網路磁碟機已掛載。", "連線錯誤")
        
    case nStatus == 2
        msgbox("Q: 槽顯示存在,但目前連線不通(可能是伺服器無回應)。", "網路逾時")
        
    otherwise
        msgbox("發生未知錯誤,代碼:" + ltrim(str(nStatus)), "系統警告")
endcase

為什麼這樣做最穩?

  1. 區分故障類型:你可以針對「沒掛載」和「連線逾時」給使用者不同的提示(例如:沒掛載叫他檢查設定,連線不通叫他檢查網路線)。

  2. 不佔用資源:BAT 跑完立刻釋放,不會留在記憶體中。

  3. 避免當機:dBase 2019 如果直接存取一個「斷掉的網路路徑」,程式可能會卡死(Not Responding),先用 BAT 檢查可以保護主程式。

你需要我幫你把這個 BAT 檔內容寫成能自動修復連線(例如:斷線時自動重新執行 net use)的版本嗎?

太好了!既然你決定採用這個方案,我為你準備了一個**「加強版」**的腳本。

這個版本除了傳回值,還加入了一個小技巧:pushd。它在處理網路路徑(UNC 或映射磁碟)時比 dir 更穩定,能更精準地偵測「路徑在但連線中斷」的情況。

1. 強化版腳本:CheckPath.bat

請將以下內容存成 CheckPath.bat

程式碼片段

@echo off
:: 設定目標路徑
set "target=Q:\KIIN_A"

:: 狀態 1: 路徑完全不存在 (連磁碟機代號都沒看到)
if not exist "%target%" exit /b 1

:: 狀態 2: 嘗試進入該目錄 (測試網路連線與權限)
pushd "%target%" >nul 2>&1
if %errorlevel% neq 0 (
    :: 路徑存在,但無法進入 (不通 / 斷連 / 權限拒絕)
    exit /b 2
)

:: 成功進入後記得退出,並傳回 0 (正常)
popd
exit /b 0

2. 在 dBase 2019 中呼叫的邏輯圖解

為了讓你開發時邏輯更清晰,這是程式執行的流程:


3. 如何在 dBase 中優雅地處理

在你的 dBase 程式碼中,建議這樣寫,讓使用者體驗更好:

程式碼片段

local nResult
nResult = run("CheckPath.bat")

if nResult == 0
   // 正常執行
   open database Q:\KIIN_A\data.dbf
else
   if nResult == 1
      msgbox("【路徑不存在】請確認 Q 槽是否已正確掛載。", "系統提示", 16)
   else
      msgbox("【連線不通】Q 槽雖在,但伺服器無回應,請檢查網路線。", "連線失敗", 48)
   endif
   // 這裡可以導向錯誤處理頁面或退出程式
endif

小撇步:

  • 權限問題:如果 nResult 回傳 2,有時候是因為該資料夾限制了讀取權限,而不一定是網路斷了。

  • 隱藏視窗:如果你不希望執行時跳出黑色的 CMD 視窗,可以在 dBase 調用時加上隱藏參數(視 dBase 2019 的 run() 函式支援度而定)。

最後,如果你希望在 nResult == 2 的時候,讓腳本自動幫你「斷開再重連」網路磁碟機,我可以再幫你把 net use 指令加進去!需要嗎?

我想 當 狀態 1 時 呈現 ‘路徑 Q 連磁碟機代號 都沒看到’ . 狀態 2 時 呈現 ‘路徑 Q: 不通 / 斷連 / 權限拒絕’ 當狀態 3 時 呼叫 Q_C.bat 幫我寫這段

這是一個非常實用的自動化邏輯。我會修改 CheckPath.bat 的邏輯,讓它不僅判斷狀態,還能根據你的需求在 狀態 3(完全正常)時呼叫另一個 Q_C.bat

1. 修改後的 CheckPath.bat

這個腳本會負責偵測並顯示你要求的訊息:

程式碼片段

@echo off
set "target=Q:\KIIN_A"

:: --- 狀態 1 檢查:路徑是否存在 ---
if not exist "%target%" (
    echo [錯誤] 路徑 Q: 連磁碟機代號都沒看到
    exit /b 1
)

:: --- 狀態 2 檢查:是否能正常存取 ---
:: 使用 pushd 嘗試掛載目錄,若失敗表示不通
pushd "%target%" >nul 2>&1
if %errorlevel% neq 0 (
    echo [錯誤] 路徑 Q: 不通 / 斷連 / 權限拒絕
    exit /b 2
)

:: --- 狀態 3:一切正常 ---
:: 先退出 pushd 掛載的空間
popd

echo [正常] 連線成功,準備執行 Q_C.bat...
:: 呼叫你的另一個 BAT 檔
if exist "Q_C.bat" (
    call "Q_C.bat"
    exit /b 0
) else (
    echo [警告] 找不到 Q_C.bat 檔案。
    exit /b 3
)

2. 邏輯流程圖

為了讓你更清楚程式的執行分支,可以參考這個流程:


3. 在 dBase 2019 中如何搭配?

在你的 dBase 程式中,你只需要執行這個 CheckPath.bat,它就會自動幫你顯示訊息並呼叫下一個動作。如果你想在 dBase 裡捕捉這些狀態:

程式碼片段

local nRet
nRet = run("CheckPath.bat")

do case
    case nRet == 1
        // 你可以在這裡記錄 Log 或做其他處理
    case nRet == 2
        // 處理連線不通的情況
    case nRet == 0
        // 代表 Q_C.bat 已經順利執行完畢
endcase

小提醒:

  • 檔案位置:請確保 Q_C.bat 與 CheckPath.bat 放在同一個資料夾內,或者在腳本中寫明 Q_C.bat 的完整路徑(例如 call "C:\Scripts\Q_C.bat")。

  • 權限:執行時請確認是否有足夠權限存取 Q 槽。

下一步:你需要我幫你把 Q_C.bat 裡面加上「自動重新連線 Q 槽」的指令(例如 net use Q: \\Server\Path)嗎?

我想看看 程式執行的狀況

為了讓你清楚看到程式執行的狀況,我調整了腳本,加入一些顏色標示動態文字,這樣你在畫面上就能一眼看出現在卡在哪個關卡。

1. 視覺強化版:CheckPath.bat

程式碼片段

@echo off
setlocal enabledelayedexpansion
set "target=Q:\KIIN_A"

echo ========================================
echo   正在檢查系統路徑連線狀態...
echo ========================================

:: 檢查狀態 1
echo [步驟 1/3] 正在偵測磁碟代號...
if not exist "%target%" (
    echo.
    echo ----------------------------------------
    echo 狀態 [1]: 路徑 Q 連磁碟機代號 都沒看到
    echo ----------------------------------------
    exit /b 1
)
echo OK: 偵測到磁碟路徑。

:: 檢查狀態 2
echo [步驟 2/3] 正在測試網路存取連線...
pushd "%target%" >nul 2>&1
if %errorlevel% neq 0 (
    echo.
    echo ----------------------------------------
    echo 狀態 [2]: 路徑 Q: 不通 / 斷連 / 權限拒絕
    echo ----------------------------------------
    exit /b 2
)
popd
echo OK: 網路連線通暢。

:: 檢查狀態 3
echo [步驟 3/3] 準備啟動 Q_C.bat...
if exist "Q_C.bat" (
    echo.
    echo ----------------------------------------
    echo 狀態 [3]: 正常通訊,正在呼叫 Q_C.bat
    echo ----------------------------------------
    call "Q_C.bat"
    exit /b 0
) else (
    echo [錯誤]: 找不到 Q_C.bat 檔案,請確認檔案位置。
    exit /b 3
)

2. 執行狀況流程圖

當你執行這個程式時,它的邏輯分支如下圖所示:


3. 如何觀察執行狀況?

  1. 手動測試:你可以直接雙擊這個 .bat 檔。如果連線失敗,視窗會停在「狀態 [1]」或「狀態 [2]」的錯誤訊息上。

  2. dBase 調用:如果是在 dBase 中執行,你可以使用 run /n (如果 dBase 版本支援) 來開啟視窗,或者在 CheckPath.bat 最後面加上 pause,這樣程式跑完就不會立刻消失,讓你有時間看清楚文字。

如果你想看到更詳細的「連線偵錯」

如果你發現路徑雖然不通,但 dir 或 pushd 判斷太慢(因為 Windows 預設逾時很久),我可以教你如何縮短檢測時間,或是把偵測結果寫成一個 log.txt 紀錄檔,方便你事後查閱。

你想嘗試看看自動記錄 Log (紀錄檔) 的功能嗎?

我只想 在 BAT檔案 處理 不放在 dbase 2019

沒問題!既然要把邏輯完全鎖定在 BAT 檔 處理,我們就需要一個能夠獨立運作視覺化的腳本。

我為你準備了這個最終版本。它會直接在 CMD 視窗中用文字進度條和明確的標題告訴你執行狀況,並且完全符合你對狀態 1、2、3 的定義。

強化版 CheckPath.bat (純 BAT 處理)

程式碼片段

@echo off
setlocal enabledelayedexpansion
title 網路路徑狀態診斷工具

:: 設定目標與檔案
set "target=Q:\KIIN_A"
set "next_script=Q_C.bat"

cls
echo ============================================================
echo           系統路徑檢查進程 - 執行時間: %time%
echo ============================================================
echo.

:: --- 狀態 1 檢查 ---
echo [檢查 1] 正在偵測磁碟掛載狀態...
if not exist "%target%" (
    echo.
    echo --------------------------------------------------------
    echo ❌ [狀態 1]: 路徑 Q 連磁碟機代號 都沒看到
    echo --------------------------------------------------------
    echo 請檢查:
    echo 1. 網路磁碟機是否已斷開?
    echo 2. 伺服器電源是否開啟?
    echo.
    pause
    exit /b 1
)
echo ✅ 磁碟代號存在。
echo.

:: --- 狀態 2 檢查 ---
echo [檢查 2] 正在測試路徑存取權限與連線品質...
pushd "%target%" >nul 2>&1
if %errorlevel% neq 0 (
    echo.
    echo --------------------------------------------------------
    echo ❌ [狀態 2]: 路徑 Q: 不通 / 斷連 / 權限拒絕
    echo --------------------------------------------------------
    echo 可能原因:
    echo 1. 網路連線逾時 (Timeout)。
    echo 2. 登入帳號密碼已過期。
    echo 3. 您沒有存取該資料夾的權限。
    echo.
    pause
    exit /b 2
)
:: 測試成功後退出掛載
popd
echo ✅ 網路通訊正常。
echo.

:: --- 狀態 3 處理 ---
echo [檢查 3] 準備執行後續批次檔...
if exist "%next_script%" (
    echo --------------------------------------------------------
    echo 🚀 [狀態 3]: 連線正常,正在呼叫 %next_script%
    echo --------------------------------------------------------
    echo.
    call "%next_script%"
) else (
    echo ⚠️ 警告:連線正常,但找不到程式 %next_script%
    echo 請確認檔案是否放在與此腳本相同的路徑下。
    pause
)

echo.
echo ============================================================
echo           檢查程序結束
echo ============================================================
pause

程式執行邏輯圖解


如何使用這個 BAT?

  1. 直接執行:你只需要雙擊這個 CheckPath.bat

  2. 偵錯模式:我在錯誤發生的地方加了 pause,這樣當路徑「不通」或「找不到代號」時,視窗會停下來讓你看到錯誤訊息,而不會直接閃退。

  3. 自動化連接:如果未來你想在狀態 2 的時候自動嘗試修復(例如輸入密碼重連),我們只需要在狀態 2 的區塊加入 net use Q: ... 指令即可。

目前的顯示方式符合你的需求嗎?如果你希望連「執行成功」時都不要手動按按鍵關閉,我可以幫你拿掉最後一個 pause

我測試 時 都是 檢查 1 出現 就算 Q:\KINN_A 對出來

這通常是因為 Windows 權限隔離(UAC) 或 路徑名稱微小差異 造成的。

在 Windows 中,如果你用「系統管理員身分」執行 BAT 檔,它可能看不到你在「一般使用者」權限下掛載的 Q 槽;或者路徑中有隱藏的空格、分號也會導致失敗。

為了找出原因,我們要在檢查 1 之前加入一段 「系統環境偵查」,讓你親眼看到電腦現在到底認不認得 Q 槽。

診斷偵錯版 CheckPath.bat

請執行這個版本,它會列出你電腦目前所有的磁碟代號,我們來比對一下:

程式碼片段

@echo off
setlocal enabledelayedexpansion
set "target=Q:\KIIN_A"

echo ========================================
echo   [診斷模式] 正在檢查您的系統磁碟
echo ========================================

:: --- 診斷:列出目前所有已掛載的磁碟代號 ---
echo 1. 目前電腦偵測到的磁碟代號清單:
wmic logicaldisk get deviceid, volumename, description

echo.
echo 2. 正在檢查目標路徑: "%target%"
echo ----------------------------------------

:: 檢查狀態 1
if not exist "%target%" (
    echo [結果] ❌ 檢查 1 失敗:系統回報找不到該路徑。
    
    :: 額外檢查 Q 槽本身是否存在
    if not exist "Q:\" (
        echo [分析] 磁碟機代號 Q: 根本不存在於此視窗環境。
    ) else (
        echo [分析] 磁碟機 Q: 存在,但找不到資料夾 \KIIN_A。
        echo [建議] 請檢查拼字是否為 KIIN_A 還是 KINN_A (你剛才輸入的是 KINN)?
    )
    echo ----------------------------------------
    pause
    exit /b 1
)

echo [結果] ✅ 檢查 1 通過!
pause

常見的三個原因與解決方法:

  1. 拼字錯誤(最常見): 你在前面的問題寫 KIIN_A,但剛剛回覆時寫 KINN_A。多一個 N 或少一個 Iif exist 就會判斷為不存在。請核對 Q 槽內資料夾的精確名稱。

  2. 管理員權限隔離: 如果你「右鍵點選系統管理員執行」這個 BAT,而 Q 槽是你在一般模式下連線的,管理員視窗會看不見 Q 槽。

    • 解決方法:直接雙擊執行 BAT,不要用管理員身分執行。

  3. 尾端反斜線: 有時候 if exist Q:\KIIN_A 會失敗,但 if exist Q:\KIIN_A\ (後面加斜線) 卻會成功。

執行建議:

請跑一次上面的「診斷版」,看看第一部分的 磁碟代號清單 裡面有沒有出現 Q:

  • 如果清單有 Q:,代表是資料夾名稱(KIIN vs KINN)的問題。

  • 如果清單沒 Q:,代表這個 BAT 執行的權限環境抓不到網路磁碟。

你要不要先確認一下 Q 槽裡的資料夾名稱,到底是兩個 I (KIIN) 還是兩個 N (KINN)?

這隻程式 一閃而過 怎麼看 !

會「一閃而過」是因為腳本執行完畢後會自動關閉視窗。

要看清楚執行狀況,有兩個最簡單的方法:

  1. 在腳本最後加上 pause 指令:這會強迫視窗停住,顯示「請按任意鍵繼續…」。

  2. 手動打開 CMD 視窗來執行:這是開發者最常用的做法。

我幫你寫了一個**「診斷專用版」**。這個版本不僅會停住,還會自動檢查你的 Q 槽到底是名稱打錯,還是權限抓不到。

診斷專用腳本 (請另存為 TestQ.bat)

程式碼片段

@echo off
:: 強制顯示 UTF-8 編碼,避免亂碼
chcp 65001 >nul

echo ============================================
echo   路徑診斷工具 (視窗不會閃退)
echo ============================================

:: 1. 列出目前系統抓到的所有磁碟
echo [目前系統磁碟清單]:
wmic logicaldisk get deviceid, volumename

echo --------------------------------------------

:: 2. 檢查 Q 槽是否存在
if exist Q:\ (
    echo [OK] 找到 Q: 磁碟機。
) else (
    echo [錯誤] 找不到 Q: 磁碟機。
    echo (原因:可能未掛載,或您用了「管理員身分」執行導致看不到一般使用者的磁碟)
)

:: 3. 檢查資料夾是否存在 (請確認是 KIIN 還是 KINN)
set "myDir=Q:\KIIN_A"
echo [檢查路徑]: %myDir%

if exist "%myDir%" (
    echo [OK] 找到資料夾 %myDir%
) else (
    echo [錯誤] 找不到該資料夾。
    echo (請核對名稱:是 KIIN_A 還是 KINN_A ?)
)

echo --------------------------------------------
echo 診斷結束。
pause

為什麼會一閃而過?

當腳本偵測到錯誤(例如狀態 1)並執行 exit 時,CMD 視窗會直接關閉。

如何正確查看執行狀況? (不改程式的方法)

如果你不想改程式,請依照以下步驟:

  1. 按下鍵盤 Win + R,輸入 cmd 然後按 Enter。

  2. 在黑色的視窗中,直接把你的 .bat 檔案用滑鼠拖進去

  3. 按下 Enter

  4. 這樣就算程式跑完了,視窗也會留著,讓你慢慢看哪裡出錯。

關於你說「檢查 1 出現」

這代表 if exist Q:\KIIN_A 回傳了「不存在」。請檢查:

  • 大小寫/拼字:確認資料夾名稱完全正確。

  • 權限問題絕對不要對這個 BAT 檔按「右鍵 -> 以系統管理員身分執行」。這會導致腳本找不到你在一般模式下掛載的網路磁碟。

你可以試著跑一下上面的診斷腳本,然後告訴我它在「目前系統磁碟清單」那邊有沒有出現 Q: 嗎?

Gemini 可能會出錯,請

個人頭像照片

By 伍芳左

MIS, ERP Pro... RHCE Member (7.2)

發表迴響