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

[BAT] Substring van regel uit tekstfile binnen een FOR-loop

Pagina: 1
Acties:

  • Stinow
  • Registratie: November 2006
  • Laatst online: 18-11 11:43
Goedemorgen,

Reeds enige dagen probeer ik een stukje tekst te krijgen uit onderstaande regel middels een BAT file:

code:
1
ProfileImagePath  REG_SZ  %SystemDrive%\Documents and settings\testnaam


Wat ik hieruit wil krijgen is alles vanaf %SystemDrive%, ofwel alles vanaf positie 26.

Mijn BAT-file ziet er als volgt uit:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@echo off
del regresult.log 2>nul 
del profiles.log 2>nul

setlocal EnableDelayedExpansion
for /f "skip=5" %%a in ('reg query HKEY_LOCAL_MACHINE\SOFTWARE\aaa') do (
  reg query %%a /v "ProfileImagePath" >> c:\regresult.log
)

for /f "tokens=*" %%b in ('type regresult.log ^| find "REG_SZ"') do (
  set profielen=%%b:~20,30%
  echo %profielen% >> c:\profiles.log
)

del c:\regresult.log

echo De volgende userprofiles worden verwijderd:
type profiles.log


Het resultaat is een simpele:

ECHO is off (uit)
ECHO is off (uit)
ECHO is off (uit)
ECHO is off (uit)

Dit komt misschien door een % te veel, maar ook met een % minder bij %profielen, werkt het niet.

Iemand wellicht enig idee hoe dit werkend te krijgen is (in .batfile)?

Thanks!

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 00:24
Heb je deze zelf geschreven? Gaat het wel goed als je de afzonderlijke deelcommando's uitvoert en ligt het dus aan de for loop, of gaat het al eerder mis? Wat is die 'aaa' in regel 6, staat dat voor de gebruikersnaam, en waarom zou die in HKLM staan?

  • Stinow
  • Registratie: November 2006
  • Laatst online: 18-11 11:43
Nielson schreef op dinsdag 17 november 2009 @ 09:48:
Heb je deze zelf geschreven? Gaat het wel goed als je de afzonderlijke deelcommando's uitvoert en ligt het dus aan de for loop, of gaat het al eerder mis? Wat is die 'aaa' in regel 6, staat dat voor de gebruikersnaam, en waarom zou die in HKLM staan?
Is zelf geschreven en uitgezocht ;). De aaa is een registry key die ik heb aangemaakt om het geheel op te testen. Daarbinnen staan wat subkeys / folders. Met als gehele structuur:

HKEY_LOCAL_MACHINE
> SOFTWARE
>> aaa
>>> 43523424234242432
[key] ProfileImagePath
[key] .....
>>> 4543-5345345-342324
[key] ProfileImagePath
[key] .....
>>> 7543253543534-34534123
[key] ProfileImagePath
[key] .....

Het zit hem volgens mij in de:

code:
1
  set profielen=%%b:~20,30%

[ Voor 4% gewijzigd door Stinow op 17-11-2009 10:03 ]


  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 00:24
Kun je regresult.log eens posten?

  • Stinow
  • Registratie: November 2006
  • Laatst online: 18-11 11:43
Nielson schreef op dinsdag 17 november 2009 @ 10:20:
Kun je regresult.log eens posten?
Bij deze :


! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\aaa\43534534-5364523423423
ProfileImagePath REG_SZ %SystemDrive%\Documents and settings\naamw


! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\aaa\45435765-345345
ProfileImagePath REG_SZ %SystemDrive%\Documents and settings\naamx


! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\aaa\54647567435243-12234234
ProfileImagePath REG_SZ %SystemDrive%\Documents and settings\Administrator


! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\aaa\756545324-13213123
ProfileImagePath REG_SZ %SystemDrive%\Documents and settings\naamz


! REG.EXE VERSION 3.0

HKEY_LOCAL_MACHINE\SOFTWARE\aaa\ss-45645-534534-456745654
ProfileImagePath REG_SZ %SystemDrive%\Documents and settings\naamy

  • Stinow
  • Registratie: November 2006
  • Laatst online: 18-11 11:43
code:
1
2
set str="Dit is een fijne string"
echo %str:~10%


Resulteert in een goede:
n fijne string

  • Nielson
  • Registratie: Juni 2001
  • Laatst online: 00:24
code:
1
for /f "delims=\ tokens=3" %%a in ('findstr "REG_SZ" regresult.log') do echo %%a


Er zijn ws wel meedere (en misschien betere) manieren om hetzelfde te bereiken dus bovenstaand is maar een voorbeeld, maar hiermee krijg je met de door jouw geposte regresult.log een lijstje van gebruikersnamen (die je eventueel weer naar profiles.log kunt redirecten, maar daarna type je 'm weer dus leek me dubbelop).

  • Stinow
  • Registratie: November 2006
  • Laatst online: 18-11 11:43
Nielson schreef op dinsdag 17 november 2009 @ 11:06:
code:
1
for /f "delims=\ tokens=3" %%a in ('findstr "REG_SZ" regresult.log') do echo %%a


Er zijn ws wel meedere (en misschien betere) manieren om hetzelfde te bereiken dus bovenstaand is maar een voorbeeld, maar hiermee krijg je met de door jouw geposte regresult.log een lijstje van gebruikersnamen (die je eventueel weer naar profiles.log kunt redirecten, maar daarna type je 'm weer dus leek me dubbelop).
Hmm een delim op \ is inderdaad ook wel een optie. De rest van het pad kan ik er wel hard-coded inzetten straks als ik de elementen ga verwijderen.

Dankjewel in ieder geval, hier ga ik nog even mee verder :).
Pagina: 1