2011-09-20 129 views
0
SETLOCAL ENABLEDELAYEDEXPANSION 
FOR %%A IN (*.*) DO (
SET var=%%A 
ECHO !var:~0,-4! 
) 

由於我們迭代內的變量FOR循環,你必須使用!周圍的變量,但是,結合方法:~#,-#從刪除角色變量的結尾,它不需要。批處理腳本從變量刪除字符內FOR循環

在我的例子中,我們只是從文件名中刪除擴展名。我知道您可以使用%%~nA來獲取文件名,但這僅僅是一個使用示例。

有沒有辦法做到這一點在FOR循環?也許與我正在使用的方法不同?

+1

上面的例子你發佈了我的作品 - 也就是說,它帶走了文件名中的最後4個字符(如果文件名超過4個字符)。 – Arun

+2

這對我來說沒問題。我只是在不改變任何內容的情況下複製這些內容,只是在開頭添加了「@ECHO OFF」。當你運行這個腳本時特別錯誤? –

+0

大聲笑我想我自己解決問題,甚至不知道它= /。現在,如果我能在XD之前弄清楚我做錯了什麼。 – Mechaflash

回答

2

如果set var=%%A後面有隱藏空格,則可能會失敗。
那麼你就只能刪除空格,因此最好使用

set "var=%%A"

它是獨立的隱蔽空間,即使是characers最後一個引號後面忽略。

但也許你的問題是一個完全不同的類型?