2012-04-19 9 views
0

ファイル名(1行目から1行目)を読み込み、ファイル名を含むスクリプトを作成しようとしています。 次に、このファイルをある場所で検索し、見つかったすべてのパスを新しい最後の列としてcsvに追加します。 次のスクリプトは、ファイルを検索しようとしています。 しかし、正しく動作しません。私は、この行の空%のREPORTNAMEの%を持っているように思える:バッチ:ファイルからファイル名を読み取って検索し、ファイルに見つかったパスを追加します。

FOR /F "tokens=*" %%N IN ('dir /b /A:-D /s %reportname%') 

フルスクリプト:

setlocal enabledelayedexpansion 
set currentdir=%CD% 
set grspath=\Sources\ROL\Kesko\grs13\ 
set filename=sqrscripts.csv 
set tmpfilename=scripts.new 
SET reppath="" 
SET reportname="" 

IF NOT "%1"=="" grspath=%1 

FOR /F "tokens=1,2,3,4,5,6,7,8* delims=;" %%a in (%filename%) do (

    SET tempstr=%%a;%%b;%%c;%%d;%%e;%%f;%%g; 
    SET reportname=%%a 

    echo Serching !reportname! in %grspath% ... 

    cd %grspath% 
    FOR /F "tokens=*" %%N IN ('dir /b /A:-D /s %reportname%') DO (
     IF NOT "%reppath%"=="" (SET reppath=%reppath%,%%N) ELSE (SET reppath=%%N) 
     ) 
    cd %currentdir% 

    echo Found: %reppath% 
) 

あなたは多分あなたは間違って何かを見つけることができ、これに見ていただけますか?

マイ入力:

E:\tmp>(
SET tempstr=art.rep;1;2;3;4;5;6;7 
SET reportname=art.rep 
echo Serching !reportname! in e:\Sources\ ... 
cd e:\Sources\ 
FOR /F "tokens=*" %N IN ('dir /b /A:-D /s ""') DO (IF NOT """" == "" (SET reppa 
th="",%N) ELSE (SET reppath=%N)) 
cd E:\tmp 
echo Found: "" 
) 

、その後は同様の行があります。

E:\Sources\>(IF NOT """" == "" (SET reppath="",E:\Sources\somefolders\somefile.someext) ELSE (SET reppath=E:\Sources\somefolders\somefile.someext)) 
Found: "" 

答えて

0

は解決しました。 %に置き換えられました!内側のブロックに:

cd %grspath% 
    FOR /F "tokens=*" %%N IN ('dir /b /A:-D /s !reportname!') DO (
     IF NOT !reppath!==!! (
       SET reppath=!reppath!;%%N 
       echo !reppath! - new one !!! 
       ) ELSE (
       SET reppath=%%N 
       echo !reppath! - new one !!! 
       )  
     ) 
    cd %currentdir% 
    echo !reppath! - new one !!!! 
    IF NOT !reppath!==!! SET tempstr=!tempstr!;!reppath! 

    echo !tempstr!>>%tmpfilename% 
関連する問題