小弟我想要設定一個自動排程每小時自動從A資料夾搬運到掛載網路磁碟區的B資料夾
原本打算做成BAT檔然後設定工作排成器每小時執行
語法如下
set source_folder=D:\A
set destination_folder=\192.168.100.25\網路磁碟\B資料夾
copy "%source_folder%*.txt" "%destination_folder%"
網路磁碟已掛載好了,直接複製到CMD上也可以執行
但只要存成bat檔,就無法運行了?
請問這是什麼原因呢
替你問Claude AI
您遇到的問題很可能與批次檔(BAT)中的路徑表示有關。讓我們逐步分析並解決這個問題:
1. 網路路徑表示:
在 BAT 檔中,網路路徑需要使用雙斜線開頭。
2. 變數使用:
在使用變數時,確保正確地引用它們。
3. 檔案複製命令:
使用 XCOPY 代替 COPY 可能會更可靠,特別是在處理多個檔案時。
4. 錯誤處理:
添加一些錯誤檢查可以幫助診斷問題。
基於這些考慮,以下是修改後的 BAT 腳本:
```batch
@echo off
set "source_folder=D:\A\"
set "destination_folder=\\192.168.100.25\網路磁碟\B資料夾\"
if not exist "%source_folder%" (
echo 來源資料夾不存在
exit /b 1
)
if not exist "%destination_folder%" (
echo 目標資料夾不存在或網路路徑有誤
exit /b 1
)
xcopy "%source_folder%*.txt" "%destination_folder%" /Y /I
if errorlevel 1 (
echo 複製過程中發生錯誤
) else (
echo 檔案複製成功
)
pause
這個腳本做了以下改進:
如果這個腳本仍然無法正常工作,可能的原因包括:
如果問題仍然存在,您可以嘗試在腳本開頭添加 @echo on
,這樣可以看到每一步的執行過程,有助於進一步診斷問題。
我的程式如下:
set source_folder=D:\users\knvbhk
set destination_folder=\\server\folder
copy %source_folder%\*.txt %destination_folder%
使用中 要注意編碼問題
最好的方式 把名稱都改成英文的
只不過 你不需要存LOG來看紀錄嗎?
只單單 異動OR定時 複製的話 滿多免費軟體都有這功能
@echo off
set source_folder=D:\02\
set destination_folder=\\192.168.200.14\Tools
copy "%source_folder%*.txt" "%destination_folder%"
中文問題加一行 chcp 65001
@echo off
chcp 65001
set source_f................
你的 bat 檔存檔時的文字編碼是哪一種?CMD 在 Windows 中文版中預設採用 Big5, 以記事本來說, 就是 ANSI。如果是其它程式碼編輯器, 大部分預設都會採用 UTF-8, 如果是 UTF-8, 就要在你的 bat 檔中開頭加上 chcp 65001
讓 CMD 切換成採用 UTF-8 編碼, 否則它會看不懂檔案中的中文字。但也要記得在 bat 檔結尾處加上 chcp 950
切換回 Big5 編碼, 避免其它指令執行處理中文出問題。
另外, 你的程式中這一行
set destination_folder=\192.168.100.25\網路磁碟\B資料夾
是不是少了一個 \
set destination_folder=\\192.168.100.25\網路磁碟\B資料夾