2015-09-26 89 views
-1

我有各种文件的日期作为明智 cpms_2015_09_01.txt lms_2015_07_10.txt kmps_2015_10_07.txt lmps_2015_10_07.txt cpmgs_2015_10_07.txt 我想从“for循环中删除输出中删除特定文件“今天的日期名称的文件 我该如何做到这一点,我写了一个代码,我可以将所有文件的文件路径存储在XCOUNT_1 = D:\ check \ cpms_2015_09_01.txt等 中,但是今天不应该没有XCOUNT文件名像%_2015_10_07% 我对下面指出的这段代码感到震惊 DO(如果不是“%year%%day% %月%的.txt “==”!FTRIM %% J 1”从for循环

我的代码是下面

SETLOCAL ENABLEDELAYEDEXPANSION SETLOCAL SET/A MAXJ = 1 SET/AJ = 1 回波% DATE%

一套年=%日期:〜-4,4%

一套年=%年:=%

集月=%日期:7,2〜% 集月=%月:=%

集天=%日期:〜4.2% 集天=%天:=%

FOR/F “有usebackq令牌= *” %%我(DIR /S /B D:\check\*.txt)DO(IF NOT “%,比去年%%一天%%,当月%.TXT” == “!FTRIM %% J 1”(

SET XCOUNT_!J!=%%~i 
SET FNAME_!J!=%%~ni 
SET MAXJ=!J! 
SET /A J+=1 
SET FTRIM_!nxi!=%%~nxi:~-10,10% 

PAUSE ) )

+0

你相信'set \ A'在做什么? – lit

+0

我想从计数排除今天的扩展名的文件我怎么能做到这一点 –

回答

1

冷杉最重要的是,除非您告诉批处理一个命令停止并且下一个命令开始,否则不能将所有代码放在同一行上。其次,您拥有的代码只能在命令提示符下使用,而不能在批处理文件中使用,因为在批处理文件中使用for循环变量时需要两个%。第三,set /a仅用于数学;存储字符串值时使用常规set命令。

最后(也是最重要的),您需要延迟扩展来正确迭代您的for循环内的计数器变量。

此批处理脚本应该工作:

@echo off 
setlocal enabledelayedexpansion 

set J=1 
for /R "D:\TEST" %%I in (*.txt) do (
    set XCOUNT_!J!=%%I 
    set /a J+=1 
) 

如果要排除从输出特定的文件,在if声明包裹set代码。

@echo off 
setlocal enabledelayedexpansion 

set J=1 
for /R "D:\TEST" %%I in (*.txt) do (
    if not "%%~nxI"=="test.txt" (
     set XCOUNT_!J!=%%I 
     set /a J+=1 
    ) 
) 
+2

您可以使用'&'告诉批次,其中命令停止和下一个开始 – loadingnow

+0

想必你的脚本设置一些变量称为'XCOUNT_1','XCOUNT_2 '等等? –

+0

是的,在'set XCOUNT_!J!= %% I'行。 – SomethingDark

1
C:\Users\pwatson\bin>type atest.bat 
@ECHO OFF 
SETLOCAL ENABLEDELAYEDEXPANSION 
SET /A J=1 
SET /A MAXJ=0 
FOR /F "usebackq tokens=*" %%i IN (`DIR /S /B C:\Python27-32\*.exe`) DO (
    SET XCOUNT_!J!=%%~i 
    SET MAXJ=!J! 
    SET /A J+=1 
) 
SET XCOUNT 

这将产生:

C:\Users\pwatson\bin>call atest.bat 
XCOUNT_1=C:\Python27-32\python.exe 
XCOUNT_10=C:\Python27-32\Lib\site-packages\pip\_vendor\distlib\t64.exe 
XCOUNT_11=C:\Python27-32\Lib\site-packages\pip\_vendor\distlib\w32.exe 
XCOUNT_12=C:\Python27-32\Lib\site-packages\pip\_vendor\distlib\w64.exe 
XCOUNT_13=C:\Python27-32\Lib\site-packages\setuptools\cli-32.exe 
XCOUNT_14=C:\Python27-32\Lib\site-packages\setuptools\cli-64.exe 
XCOUNT_15=C:\Python27-32\Lib\site-packages\setuptools\cli-arm-32.exe 
XCOUNT_16=C:\Python27-32\Lib\site-packages\setuptools\cli.exe 
XCOUNT_17=C:\Python27-32\Lib\site-packages\setuptools\gui-32.exe 
XCOUNT_18=C:\Python27-32\Lib\site-packages\setuptools\gui-64.exe 
XCOUNT_19=C:\Python27-32\Lib\site-packages\setuptools\gui-arm-32.exe 
XCOUNT_2=C:\Python27-32\pythonw.exe 
XCOUNT_20=C:\Python27-32\Lib\site-packages\setuptools\gui.exe 
XCOUNT_21=C:\Python27-32\Scripts\easy_install-2.7.exe 
XCOUNT_22=C:\Python27-32\Scripts\easy_install.exe 
XCOUNT_23=C:\Python27-32\Scripts\pip.exe 
XCOUNT_24=C:\Python27-32\Scripts\pip2.7.exe 
XCOUNT_25=C:\Python27-32\Scripts\pip2.exe 
XCOUNT_3=C:\Python27-32\w9xpopen.exe 
XCOUNT_4=C:\Python27-32\Lib\distutils\command\wininst-6.0.exe 
XCOUNT_5=C:\Python27-32\Lib\distutils\command\wininst-7.1.exe 
XCOUNT_6=C:\Python27-32\Lib\distutils\command\wininst-8.0.exe 
XCOUNT_7=C:\Python27-32\Lib\distutils\command\wininst-9.0-amd64.exe 
XCOUNT_8=C:\Python27-32\Lib\distutils\command\wininst-9.0.exe 
XCOUNT_9=C:\Python27-32\Lib\site-packages\pip\_vendor\distlib\t32.exe 

获取这些回母体环境是另一个问题。我希望dbenham可能会作出回应。

+0

谢谢保罗这工作。 –

+0

但我打了如何使用FOR循环..XCOUNT_J这是行不通的......唯一的工作就是迭代%XCOUNT_!J 1%返回值,但同时做操作与循环迭代Ĵ值 –

+0

给出错误如何迭代然后用循环 –