🧩Java .jar 執行後輸出檔到底存在哪?給完全不懂也能看懂的圖文教學(含 CMD/PowerShell 範例)
TL;DR(先講重點)
當你在 Windows 以
java -jar xxx.jar
執行工具、而日誌裡寫著
convert <輸入完整路徑> to <輸出檔名>.txt(注意:右邊只有檔名沒有路徑)時——
輸出檔通常會被寫到你執行指令當下的「目前工作目錄」(Current Working Directory, CWD)。
如果工具本身有設定「輸出目錄」或把輸出放在「來源檔同層」,那就改去那些位置找。
為什麼「輸出檔不見了」?
很多轉檔或資料處理的
.jar 工具,若沒有明確指定輸出路徑,就會把結果寫到目前工作目錄。
你可以把「目前工作目錄」想成:「我現在站在的資料夾」。
-
在命令列(CMD/PowerShell)輸入指令時,站在哪就存到哪。
-
若日誌顯示
to example.stdf.gz.txt(只有檔名),幾乎可判定是寫到目前工作目錄。
快速辨識:這種日誌代表什麼意思?
以下是改寫過、純示意的日誌格式(與真實專案無關):
-
convert <輸入完整路徑>:讀的是哪個來源檔。 -
to <輸出檔名>.txt:只有檔名、沒有路徑 → 大多寫到目前工作目錄。
立刻查到檔案:最實用的兩段指令
方法 A:先看你當下站在哪(目前工作目錄)
CMD:
PowerShell:
方法 B:全碟搜尋指定型態(遞迴找)
CMD:
PowerShell:
提醒:以上路徑是範例。請改成你實際的資料夾。
從此不再迷路:固定輸出位置的 3 種作法
作法 1:先切到你想放的資料夾再執行
CMD:
之後所有「只有檔名的輸出」都會落在
D:\exports\converted\。
作法 2:看看工具是否支援「輸出目錄」設定
有些 .jar 會讀設定檔(例如
.properties /
.yml),裡面可能有:
或支援參數:
具體鍵名會因工具而異:常見像
outputDir、out_path、export.folder 等。
作法 3:檢視 JAR 內是否有可讀的設定檔(進階)
若你安裝了 JDK,可列出 JAR 內容找設定檔:
找到檔名後,再把它解開(或參考工具文件)調整輸出路徑。
可能的例外:有些工具會把輸出放在「來源檔同層」
少部分工具的邏輯是:輸出就放在來源檔同一資料夾。
如果你在目前工作目錄找不到,請也檢查來源檔所在處,如:
實戰流程(一步步跟著做)
-
確認我現在站在哪
-
CMD:
echo %cd% -
PowerShell:
Get-Location
-
-
在目前工作目錄找輸出
-
CMD:
dir *.txt -
PowerShell:
Get-ChildItem -Filter *.txt
-
-
來源地點也掃一遍
-
CMD:
dir /s /b E:\data\inputs\*.txt -
PowerShell:
Get-ChildItem -Path E:\data\inputs -Recurse -Filter *.txt
-
-
之後固定輸出
-
先
cd /d D:\exports\converted -
再
java -jar D:\tools\my-converter.jar
-
-
能設定就設定
-
查看工具是否支援
--output-dir或在設定檔中設定output.dir=...
-
常見問答(FAQ)
Q1:為什麼日誌只看到檔名、沒有完整路徑?
A:代表程式用的是「相對路徑」輸出,預設就是寫到目前工作目錄。
Q2:我用批次檔
.bat
執行,輸出跑到怪地方?
A:批次檔內的
cd 位置、或從哪個資料夾直接雙擊
.bat,都會改變「目前工作目錄」。在
.bat 開頭加上:
再跑
java -jar ...,輸出就固定下來了。
Q3:jar tf 失敗?找不到
jar 指令?
A:表示系統上可能只有 JRE、沒有 JDK。安裝 JDK 或把 JDK 的
bin 放到 PATH 之後再試。
Q4:PowerShell 找不到檔案,但我確定有?
A:確認有加
-Recurse(遞迴),並檢查檔案篩選條件(-Filter *.stdf*.txt)是否寫對。
小抄(可直接貼上改路徑就用)
找最近 30 個輸出(PowerShell)
固定輸出到特定資料夾(CMD 批次檔)
總結
-
日誌右邊
to 檔名.txt沒有路徑 → 先到目前工作目錄找。 -
找不到,再掃來源資料夾與你常用輸出夾。
-
想要穩定:先
cd到你指定的輸出資料夾再執行,或設定工具的輸出路徑。
留言
張貼留言