Hoe voorkom ik de fout: Error Invalid syntax in cmd

Status
Niet open voor verdere reacties.

Tijger81

Gebruiker
Lid geworden
2 jan 2010
Berichten
397
Dit script heb ik gemaakt, maar krijg een foutmelding van cmd: Error invalid Syntax
Het wordpad bestand opent goed, maar het cmd scherm blijft staan door de foutmelding
Wat doe ik fout?

@ECHO OFF
REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies /v WriteProtect /d 0x1
if errorlevel 1 goto not_exist
if not errorlevel 1 goto exist

:exist
C:\USB\USB_staat_open.rtf

:not_exist
C:\USB\USB_staat_dicht.rtf
 
Je doet
REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies /v WriteProtect /d 0x1
maar dat zou moeten zijn:
REG QUERY HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies /v WriteProtect

Tijs.
 
YES de error is weg. Nu probeer ik echter een timeout in te bouwen zodat ik tijd heb om het wordpad bestand te lezen
en dat hij daarna automatisch sluit, maar de aftelling van 10 sec gaat pas in als ik het wordpad document handmatig sluit en anders sluit wordpad niet.
Hoe kan dit?

@ECHO OFF
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect
if errorlevel 1 goto not_exist
if not errorlevel 1 goto exist

:exist
C:\USB\USB_staat_open.rtf
timeout /t 10
CLOSE "C:\USB\USB_staat_dicht.rtf"
EXIT

:not_exist
C:\USB\USB_staat_dicht.rtf
timeout /t 10
CLOSE "C:USB\USB_staat_dicht.rtf"

EXIT
 
Nog een probleempje trouwens: of het nu wel of geen writeprotect is 0x00000001 (1) of 0x0000000 (0)
ik krijg steeds het in wordpad USB is open.
 
Tsja, dat is nogal wat anders, he...
Enige manier is om lompweg de .rtf editor te killen, automatisch sluiten kan niet.

Zou iets worden als:
Code:
@ECHO OFF
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect
if errorlevel 1 goto not_exist
if not errorlevel 1 goto exist

:exist
START "" C:\USB\USB_staat_open.rtf
timeout /t 10
taskkill /f /FI "WINDOWTITLE eq USB_staat_open*"

EXIT

:not_exist
START "" C:\USB\USB_staat_dicht.rtf
timeout /t 10
taskkill /f /FI "WINDOWTITLE eq USB_staat_dicht*"

EXIT
 
Ik heb het script weer aangepast, maar het wordpad sluit niet na 10 sec, wel het cmd venster na aftellen
Maar of writeprotect nu op 0 of 1 staat, ik krijg USB staat open.rtf te zien.

@ECHO OFF
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect
if errorlevel 1 goto not_exist
if not errorlevel 1 goto exist

:exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_open.rtf
timeout /t 10
taskkil /f /IM WINDOWSTITLE eq USB_staat_open*"
EXIT

:not_exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_dicht.rtf
timeout /t 10
taskkil /f /IM WINDOWSTITLE eq USB_staat_dicht*"

EXIT
 
Tsja, het enige dat getest wordt is of de reg query actie geslaagd/niet geslaagd is.
Je test dus niet op de gequeriede registerwaarde zelf.

Daar moet je nog wat op bedenken, dus.

Tijs.
 
En verder: Je moet wel correct knippen en plakken.
Hint: In mijn code staat vóór WINDOWSTITLE óók een "-teken, in zowel het exist als not_exist stuk, bij jouw code niet!

Tijs.
 
Laatst bewerkt:
Ja had ik al aangepast, maar het lukt niet. Ik kom er niet uit.
Hij zoekt niet diep genoeg denk ik en laat het wordpad bestand openstaan na 10 seconden
En met (1) erachter lukt ook niet

@ECHO OFF
REG QUERY "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect (1)
if errorlevel 1 goto not_exist
if not errorlevel 1 goto exist

:exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_open.rtf
timeout /t 10
taskkill /f /IF "WINDOWTITLE eq USB_staat_open*"

EXIT

:not_exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_dicht.rtf
timeout /t 10
taskkill /f /IF "WINDOWTITLE eq USB_staat_dicht*"

EXIT
 
Er staat taskill /f /FI in mijn code, dus niet /IF .
Leer eens correct knippen en plakken... :rolleyes:

En lees posting #7 nog eens goed door: Met reg query kun je de registerwaarde niet (direct) in een variabele opslaan, dus je zult een andere manier van uitlezen en testen moeten gebruiken om te testen of die registerwaarde op 0 of 1 staat.

Tijs.
 
Laatst bewerkt:
Dit lukt ook niet:

@ECHO OFF
REG | find /i "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect
if errorlevel 1 goto not_exist
if not errorlevel 1 goto exist

:exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_open.rtf
timeout /t 10
taskkill /f /IF "WINDOWTITLE eq USB_staat_open*"

EXIT

:not_exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_dicht.rtf
timeout /t 10
taskkill /f /IF "WINDOWTITLE eq USB_staat_dicht*"

EXIT
 
Je zit op de goede weg met je find /i constructie.
Probeer het volgende:
REG query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect | find /i "1"
[de rest van je code]

Tijs.
 
Laatst bewerkt:
YES heb hem! DANK JE:thumb:


@ECHO OFF
REG query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect| find /i "1"
if errorlevel 1 goto exist
if not errorlevel 1 goto not_exist

:exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_open.rtf
timeout /t 10
taskkill /f /FI "WINDOWTITLE eq USB_staat_open*"

EXIT

:not_exist
START "" L:\WS\BEHEER\Policies\Scripts\USB\USB_staat_dicht.rtf
timeout /t 10
taskkill /f /FI "WINDOWTITLE eq USB_staat_dicht*"

EXIT
 
Misschien kan ik het nog mooier maken.
Is het mogelijk om een pc in het register laten kijken of er een bepaalde waarde is.(dat is gelukt)
Maar dat er dan op die pc een text.file wordt aangemaakt met de naam "USB staat open_PC123" en opslaat op de C schijf (ook kan overschrijven) en dan dit bestandje kopieert naar een bepaalde map op een netwerk schijf (maar dan niet overschrijven maar erbij zet). Meerdere pc's zullen dan namelijk dit bestandje aanmaken en in die dezelfde map plaatsen. Onze pc's loggen allen in als StudentUser en hebben een nummer. En kan de batch dat nummer in de txt naam wel plaatsen?
Is dit mogelijk? Ik heb al een beetje structuur gemaakt, maar het lijkt nog nergens op.

ECHO OFF
REG query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect| find /i "1"
if errorlevel 1 goto exist
if not errorlevel 1 goto not_exist

:exist
ECHO Hallo > USB staat dicht(pc nummer).txt opslaan in "C:\Windows" /Y /E (ook overschrijfbaar als het bestand er al is)
Copy "C:\Windows\USB staat dicht(pc nummer).txt" naar " L:\resultaten" (als er al een bestand staat, dan niet overschrijven maar erbij zetten)

EXIT

:not_exist
ECHO Hallo > USB staat open(pc nummer).txt opslaan in "C:\Windows" /Y /E (ook overschrijfbaar als het bestand er al is)
Copy "C:\Windows\USB staat open(pc nummer).txt" naar " L:\resultaten" (als er al een bestand staat, dan niet overschrijven maar erbij zetten)


EXIT
 
Laatst bewerkt:
Niet zo blij mee dat je vragen loopt te stapelen...

Probeer dit:
Code:
@ECHO OFF
REG query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect| find /i "1"
if errorlevel 1 goto exist
if not errorlevel 1 goto not_exist

:exist
Copy nul "L:\resultaten\USB_staat_dicht_%hostname%.txt"

EXIT

:not_exist
Copy nul  "L:\resultaten\USB_staat_open_%hostname%.txt"

EXIT

Doet niet (helemaal) wat je wilt, maar kijk maar of je er wat mee kunt (als aanzet).

Tijs.
 
Was ff klungelen en veell googlen, maar dit werkt! Volgens mij moet ik ook de computernaam hebben.

@ECHO OFF
REG query "HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\StorageDevicePolicies" /v WriteProtect| find /i "0"
if errorlevel 1 goto exist
if not errorlevel 1 goto not_exist

:exist
Copy L:>resultaten\USB_staat_dicht_%computername%.txt
exit

:not_exist
Copy L:>resultaten\USB_staat_open_%computername%.txt
exit

Bedankt voor de aanzet!
 
Status
Niet open voor verdere reacties.
Terug
Bovenaan Onderaan