2017-08-28 66 views
0

我有這樣的代碼:delims是意外在這個時候

@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
chcp 65001 
SET "sourcedir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER" 
SET "destdir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER\BACKUP" 
for %%a in ("%sourcedir%\*.pdf") do (
set filename=%sourcedir%\*.pdf 
set cnt=0 
set pos=0 
PAUSE 
for /f "usebackq tokens=%cnt% delims=_ " %%b in ("%%~na") do (
    COPY "%%a" "%destdir%" 
    MOVE "%%~fa" "%sourcedir%\%%b%%~xa" 


    ) 
    ) 




:loop 
if "!filename:~%pos%,1!"=="_" set /a cnt=%cnt%+1 
set /a pos=%pos%+1 
if not "!filename:~%pos%,1!"=="" goto loop 

echo Count: %cnt% 

中的計數代碼:環是計算在文件名中的所有下劃線(_),所以計數存儲在變量%CNT %,然後插入到標記中,因爲我收到的文件名中的下劃線不確定。 其餘的代碼是基於令牌和定界符重命名文件,但每當我運行這段代碼時,它都會給我這個錯誤:"delims was unexpected at this time "。 任何人都可以解釋我爲什麼?

+0

您在其中也使用相同的循環中不斷變化的'%CNT%'值後它。試試這個:'for/f'usebackq tokens =!'cnt!delims = _「' – MichaelS

+0

我正面臨同樣的錯誤:/ –

+1

[Windows批處理循環雖然帶動態令牌計數變量](https:// stackoverflow。 com/questions/12072777/windows-batch-loop-though-variable-with-dynamic-token-count) – Squashman

回答

0

我只是猜測你想將pdf文件重命名爲光禿名稱的最後一個下劃線分隔元素。
使用self expanding code -technic我回答你的最後一個問題,這應該做的。

:: Q:\Test\2017\08\28\SO_45920139.cmd 
@Echo off&SetLocal EnableExtensions EnableDelayedExpansion 
chcp 65001 >NUL 
Set "sourcedir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER" 
Set "destdir=C:\Users\leandro.batista\Desktop\SAMPLES RENAMER\BACKUP" 

For %%A in ("%sourcedir%\*_*.pdf") do (
    Call :SplitName NewName "%%~nA" 
    COPY "%%A" "%destdir%" 
    MOVE "%%~fA" "%sourcedir%\!NewName!%%~xA" 
) 

Goto :Eof 
:SplitName 
set "Name=%~2" 
Set i=1&set "Name[!i!]=%Name:_="&Set /a i+=1&Set "Name[!i!]=%" 
Set "%~1=!Name[%i%]!" 
Goto :Eof 

模擬樹前

> tree C:\ /F 
C:\ 
└───Users 
    └───leandro.batista 
     └───Desktop 
      └───SAMPLES RENAMER 
       │ one_two_three.pdf 
       │ four_five_six.pdf 
       │ 
       └───BACKUP 

,並批量運行

> tree C:\ /F 
C:\ 
└───Users 
    └───leandro.batista 
     └───Desktop 
      └───SAMPLES RENAMER 
       │ six.pdf 
       │ three.pdf 
       │ 
       └───BACKUP 
         one_two_three.pdf 
         four_five_six.pdf 
+0

我不得不改變一些代碼,但它完美的工作 –

0

顯示的問題是由cnt的初始值爲0造成的。如果您嘗試使用tokens=0,您將收到此錯誤。

你期望這段代碼做什麼並不是很清楚。如果你提供了一些例子,可能會更清楚。

相關問題