Toon posts:

[Vista/XP/2k batch] variable .exe automatisch uitvoeren *

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een batch file gemaakt die bestanden uit een map download.

Vervolgens moet hij deze bestanden uitpakken (sfx archive)

Op zich geen probleem (c:\bestand.exe) klaar!! alleen staat de naam van het bestand nooit vast, wel is het altijd een exe

ik doe dus dit:
code:
1
robocopy \\server\%1 c:\temp


als de bestandsnaam van tevoren vast stond kon ik dus dit doen:

code:
1
2
robocopy \\server\%1 c:\temp
c:\temp\bestand.exe


Hoe kan ik dus makkelijk achterhalen hoe de bestanden heten in die map? en deze direct in de batch droppen.

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:14
Batch files is geen PRG
-> WOS

https://fgheysels.github.io/


  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Je kunt een FOR loopje gebruiken.

Maar welk OS? Best kans dat je tegenwoordig betere alternatieven hebt, zoals WSH of PowerShell.

[ Voor 60% gewijzigd door F_J_K op 21-02-2007 14:37 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

Topicstarter
K zag alle batch topics in PRG staan, vond het zelf ook al van niet hoor ;)


Het OS is voornamelijk XP maar moet ook werken in 2000 en vista.

Ik wil het liefst alles vanuit 1 batch uitvoeren (VB script mag ook maar daar weet ik helemaal niets van), hoe kan ik for gebruiken in deze situatie?

Verwijderd

for /f "tokens=1 delims=!" %%a in ('dir/b c:\temp^|find /i ".exe"') do set exefile=%%a
start /w %exefile%

dit werkt overigens alleen als er maar 1 exe file in staat. Bij meerdere zal alleen de laatste uitgevoerd worden.

oh dit is ff uit het hoofd, kan een syntax foutje instaan :)

[ Voor 14% gewijzigd door Verwijderd op 21-02-2007 14:56 ]


  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04-2025

[ash]

Cookies :9

Dit kan inderdaad eenvoudig met een FOR lus, bijvoorbeeld:
code:
1
for /f "delims=?" %%i in ('dir c:\temp\*.exe /b') do %%i

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

hoe kan ik for gebruiken in deze situatie?
Zie for /? voor de hele waslijst aan opties. FOR is verplichte kennis voor iedereen die wat met batches wil doen dus neem het even helemaal door ;)

Als veel files in die dir kan je of een tijdelijke dir gebruiken per keer, of middels xcopy /D:m-d-j /L de lijst van alleen vandaag opvragen en die pipen naar for als het er meer dan 1 is of meteen de executable starten.

Edit: de manier van iis5_rulez is leuker, zeker als je dan bij dir ook de parameter /od gebruikt voor sortering.

[ Voor 24% gewijzigd door F_J_K op 21-02-2007 14:56 ]

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


  • Krypt
  • Registratie: April 2000
  • Laatst online: 12-02 20:18
Erhmm. Waar moeilijk met een dir werken?
code:
1
for %%a in (c:\temp\*.exe) do start /w %%a

ii5_rulez & [ash]; is er een rede dat jullie met een dir statement werken?

Pvouput live


  • [ash]
  • Registratie: Februari 2002
  • Laatst online: 05-04-2025

[ash]

Cookies :9

Krypt schreef op woensdag 21 februari 2007 @ 14:58:
ii5_rulez & [ash]; is er een rede dat jullie met een dir statement werken?
Kwestie van a) gewenning en b) deze syntax wist ik uit mijn hoofd.

Verwijderd

[ash] schreef op woensdag 21 februari 2007 @ 15:02:
[...]

Kwestie van a) gewenning en b) deze syntax wist ik uit mijn hoofd.
same

overigens het direct start hoe jij doet is erg link... de for loop zal eerst doorlopen worden en alleen de laatste exe zal uitgevoerd worden.

[ Voor 33% gewijzigd door Verwijderd op 21-02-2007 15:18 ]


  • Krypt
  • Registratie: April 2000
  • Laatst online: 12-02 20:18
code:
1
for %%a in (c:\temp\*.exe) do start /w %%a
Geeft direct alle exe files als resultaat. Waarom geef je de voorkeur om toch met een dir/find combi te werken. (Ben gewoon benieuwd hoor :))

[ Voor 4% gewijzigd door Krypt op 21-02-2007 15:17 ]

Pvouput live


Verwijderd

hmmm ik zie dat het wel werkt als je geen /f gebruikt.

ik gebruik gewoon altijd een /f optie, omdat dit mij de meeste mogelijkheden geeft om de data te manipuleren.

  • F_J_K
  • Registratie: Juni 2001
  • Niet online

F_J_K

Moderator CSA/PB

Front verplichte underscores

Juist omdat je wellicht niet wilt dat ook de oude executables worden gestart vond ik het wel een handige (bij gebruik van /od dan). Maar als er maar 1 is, is het wat omslachtig :P

'Multiple exclamation marks,' he went on, shaking his head, 'are a sure sign of a diseased mind' (Terry Pratchett, Eric)


Verwijderd

F_J_K schreef op woensdag 21 februari 2007 @ 15:28:
Juist omdat je wellicht niet wilt dat ook de oude executables worden gestart vond ik het wel een handige (bij gebruik van /od dan). Maar als er maar 1 is, is het wat omslachtig :P
tja, ik kan niet zeggen dat ik daar over nagedacht heb :)

for /f geeft je gewoon de mogelijkheid txtfiles te manipuleren, strings te manipuleren en commands te manipuleren. De overige opties kunnen dit niet allemaal, dus ik ken alleen de /f switch omdat ik daarmee alles kan doen, zij het soms wat omslachtig :)

Verwijderd

Topicstarter
Hartstikke bedankt voor die for regel, hij werkt helemaal.

ik moet me inderdaad wat meer gaan verdiepen in deze commando`s.
Pagina: 1