Check alle échte Black Friday-deals Ook zo moe van nepaanbiedingen? Wij laten alleen échte deals zien

[DOS] SET werkt niet, variabele houdt oude waarde vast

Pagina: 1
Acties:

  • Hs82H
  • Registratie: Augustus 2006
  • Laatst online: 15-11 20:51
Scriptje is voor DOS NT geschreven op XP en wordt uitgevoerd via de command prompt.

Het probleem is dat is de variabele ORIG_FILENAME niet van een nieuwe waarde kan voorzien. De waarde moet komen uit file die middels een FOR loopje uitgelezen wordt.

Zie hier de code:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
  echo START FINDSTR

  findstr /m "%%b" C:\Temp\gasdats\*.* > tmp_filename.txt && (

    echo "%%ORIGFILE_NAME%% (for)" %ORIG_FILENAME%

    for /f "tokens=4-13 delims=\_" %%k in (tmp_filename.txt) do set ORIG_FILENAME=%%k_%%l_%%m_%%n_%%o__%%p_%%q_%%r_%%s

    echo "%%ORIGFILE_NAME%% (after)" %ORIG_FILENAME%
    

    echo ^<td^>%ORIG_FILENAME%^</td^> >> report_gasdats_%UNIQUE%.html
    echo ^<td^> >> report_gasdats_%UNIQUE%.html

    echo "DO SQLQUERY WITH %%ORIG_FILENAME%%" %ORIG_FILENAME%


    sqlplus -s /nolog @query2.sql %ORIG_FILENAME% >> report_gasdats_%UNIQUE%.html

    echo ^</td^> >> report_gasdats_%UNIQUE%.html

  ) || (


    echo ^<td^>NEE^</td^>^<td^>-^</td^> >> report_gasdats_%UNIQUE%.html
    echo ^<td^>-^</td^>
  )

  echo EIND FINDSTR



En zie hier de logging waarin te zien is dat ORIG_FILENAME zijn waarde CATS_RECVD_2008_07_29__14_43_01_667.dat.cmpr.DA vasthoudt, terwijl de logging toch echt aangeeft dat SET ORIG_FILENAME CATS_RECVD_2008_07_29__15_02_26_621.dat moet worden:

code:
1
2
3
4
5
6
7
START FINDSTR
"%ORIGFILE_NAME% (for)" CATS_RECVD_2008_07_29__14_43_01_667.dat.cmpr.DA

C:\Temp>set ORIG_FILENAME=CATS_RECVD_2008_07_29__15_02_26_621.dat
"%ORIGFILE_NAME% (after)" CATS_RECVD_2008_07_29__14_43_01_667.dat.cmpr.DA
"DO SQLQUERY WITH %ORIG_FILENAME%" CATS_RECVD_2008_07_29__14_43_01_667.dat.cmpr.DA
EIND FINDSTR



Wie kan me hierbij helpen?

  • RobIII
  • Registratie: December 2001
  • Niet online

RobIII

Admin Devschuur®

^ Romeinse Ⅲ ja!

(overleden)
offtopic:
DOS NT bestaat niet ;)

Waar hoort mijn topic?
PRG >> WOS

There are only two hard problems in distributed systems: 2. Exactly-once delivery 1. Guaranteed order of messages 2. Exactly-once delivery.

Je eigen tweaker.me redirect

Over mij


  • Nielson
  • Registratie: Juni 2001
  • Nu online
In tmp_filename.txt staat dus ook de juiste waarde, en deze bevat maar één regel (anders SET ie 'm als de laatste regel? Gebruik je ergens in je script de SETLOCAL ENABLEDELAYEDEXPANSION functie?

  • Hs82H
  • Registratie: Augustus 2006
  • Laatst online: 15-11 20:51
Thnx Nielson! Dat is het!

In een FOR loop moet je blijkbaar lokale variabelen gebruiken die je op dat moment geSET hebt. Ik gebruikte systeemvars...

  • alt-92
  • Registratie: Maart 2000
  • Niet online

alt-92

ye olde farte

Maar dat lijkt me ook logisch, immers pakt je FOR loop anders altijd dezelfde Systemvar SET terwijl je juist niet je global wil hebben.

ik heb een 864 GB floppydrive! - certified prutser - the social skills of a thermonuclear device