2015-09-26 85 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

給出錯誤如何迭代然後用循環 –