德利姆斯此时出人意料

时间:2017-08-28 13:22:44

标签: windows batch-file

我有这段代码:

$_ | Out-File C:\errors.txt -Append

循环中的计数代码用于计算文件名中的所有下划线(_),因此计数存储在变量%cnt%中,然后插入到标记中,因为我收到的文件名中的下划线是不确定。 代码的其余部分是根据标记和delimns重命名文件,但每当我运行此代码时,它都会给我这个错误:@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% 。 谁能解释我为什么?

2 个答案:

答案 0 :(得分:0)

显示的问题是由nvm -DpropA='valueA, valueB, valueC' 的初始值public static void main(String[] args) { for (String arg: args) { if (arg.contains(",")) { String[] subArgs = arg.split[","]; // do stuff } } } 引起的。如果您尝试使用cnt,则会收到此错误。

您对此代码的期望并不十分清楚。如果你提供一些例子,也许会更清楚。

答案 1 :(得分:0)

我只是猜测你想将pdf文件重命名为裸名称的最后一个下划线分隔元素。
使用self expanding code - 我对你上一个问题的回答的技巧,这应该做。

:: 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