iT邦幫忙

0

以某個批次檔開啟多個指定檔案

我有一個批次檔
把檔案拖拉到上面
以批次檔開啟的話
檔名就可以自動減一
例如0050會變0049
但是我一次選多個檔案拖拉到批次檔的時候只會執行一個檔案
請問有辦法解決嗎?

SETLOCAL ENABLEDELAYEDEXPANSION
set Filename=%~n1
echo %Filename%
set Filename=%Filename:~-1%
echo %Filename%
set /a Filename=Filename-1
echo %Filename%
ren %1 %Filename%.txt
haoming iT邦好手 1 級 ‧ 2016-12-08 08:34:57 檢舉
看你批次檔怎麼寫而已
vino1 iT邦大師 1 級 ‧ 2016-12-08 17:21:43 檢舉
到上層把整個資料夾拖進來有用嗎?!
不然貼出來大家研究一下批次檔內容...
沒用喔~

2 個回答

WilliamHuang
iT邦研究生 1 級 ‧ 2016-12-08 03:05:31
【**此則訊息已被站方移除**】
0
蟹老闆
iT邦大師 1 級 ‧ 2016-12-08 19:18:38

請參考

@Echo Off
For %%i In (%*) Do (
Echo 這裡插入原來的批次指令 變數替換成 %%i
)
Echo 作業完成.
Pause

說明:
可拖曳至批次檔旳檔案數量會受限於路徑及檔名,若整個檔案的路徑越長則可拖曳的數量越少,基上上百個不是問題.
若檔案過多時批次檔會直接跳脫不執行任何動作,最後的pasue 用來確認作業有完成.

看更多先前的回應...收起先前的回應...

剛改完結果只抓得到第一個檔案

蟹老闆 iT邦大師 1 級 ‧ 2016-12-10 00:30:41 檢舉

是否能把你原來的批次檔POST上來討論?

蟹老闆 iT邦大師 1 級 ‧ 2016-12-10 00:35:39 檢舉

看到了

SETLOCAL ENABLEDELAYEDEXPANSION
set Filename=%~n1
echo !Filename!
set Filename=!Filename:~-1!
echo !Filename!
set /a Filename=Filename-1
echo !Filename!
Echo ren %%i !Filename!.txt
蟹老闆 iT邦大師 1 級 ‧ 2016-12-10 00:36:20 檢舉

SETLOCAL ENABLEDELAYEDEXPANSION
放到第一行即可

蟹老闆 iT邦大師 1 級 ‧ 2016-12-10 00:47:35 檢舉

例如0050會變0049
不會有十位數你POST上來的部份只會抓到最後一個數字

我要發表回答

立即登入回答