Toon posts:

[Dos] Output exe in een var

Pagina: 1
Acties:

Verwijderd

Topicstarter
Ik heb een exe gemaakt die de datum uitvoert. Wat ik wil is met die datum een map aan maken zodat hierin de backups van die datum komen.

Het probleem nu alleen is dat ik die datum niet in een batch kan krijgen als variabele. Ik zat zelf meer te denken in de richting van: datum.exe>%bla% of iets dergelijks maar krijg het niet voor mekaar.

Ook de menige for strings die ik in de search voorbij heb zien komen werken ook niet. Allemaal syntax errors :(:(

Argzz.. (Eerst even koffie)

Exe file

  • drm
  • Registratie: Februari 2001
  • Laatst online: 09-06-2025

drm

f0pc0dert

Je zou de datum als een int terug kunnen geven, en dan niet naar stdout maar naar stderr sturen, om vervolgens met errorlevel op te vragen...

Maar in principe zou het via stdout ook wel moeten kunnen...

Music is the pleasure the human mind experiences from counting without being aware that it is counting
~ Gottfried Leibniz


Verwijderd

Topicstarter
Op woensdag 22 mei 2002 10:07 schreef drm het volgende:
Je zou de datum als een int terug kunnen geven, en dan niet naar stdout maar naar stderr sturen, om vervolgens met errorlevel op te vragen...

Maar in principe zou het via stdout ook wel moeten kunnen...
Hmzz? Nog nooit van gehoord. Zou je me iets meer op weg kunnen helpen.

Tis trouwens gewoon een 98 machine dus date/t werkt niet :(

  • cjdijk
  • Registratie: Oktober 2001
  • Laatst online: 05-09 14:44

cjdijk

Hans favoriete radiostation

Ik weet niet welke programmeertaal je gebruikt,
maar in (visual) basic kan je een command line
opdracht uit laten voeren met het SHELL("") commando.
Het onderstaande werkt:

Regel1$ = "SET Datum=" + DATE$
Regel2$ = "ECHO De variable Datum is gevuld met %Datum%"
SHELL(Regel1$)
SHELL(Regel2$)

In een batch file kan je dat ook zetten:
@ECHO OFF
SET Datum=22-05-2002
ECHO De variable Datum is gevuld met %Datum%

Als je dat uitvoert, krijg je dit op je scherm:
C:\>test
De variable Datum is gevuld met 22-05-2002

P4-3.2GHz Asus P4C800 Deluxe ATI-AIW Radeon 512MB 360GB


Verwijderd

Op woensdag 22 mei 2002 10:21 schreef cjdijk het volgende:
Ik weet niet welke programmeertaal je gebruikt,

In een batch file kan je dat ook zetten:
@ECHO OFF
SET Datum=22-05-2002
ECHO De variable Datum is gevuld met %Datum%

Als je dat uitvoert, krijg je dit op je scherm:
C:\>test
De variable Datum is gevuld met 22-05-2002
topic lezen is ook een vak.
er wordt gevraagd hoe de output van een exe file af te vangen, niet hoe een variabletje de declareren en te printen......

komop zeg.

  • cjdijk
  • Registratie: Oktober 2001
  • Laatst online: 05-09 14:44

cjdijk

Hans favoriete radiostation

Op woensdag 22 mei 2002 19:53 schreef Foxboy het volgende:

[..]

topic lezen is ook een vak.
er wordt gevraagd hoe de output van een exe file af te vangen, niet hoe een variabletje de declareren en te printen......

komop zeg.
Ik ging er vanuit dat hij zelf die exe file
geprogrammeerd had.
En dus zelf de source wilde gaan aanpassen.

Topic starter, ik wil je wel even een exe file opsturen
die de huidige datum in een dos variabele zet.
Laat even weten of je dat wilt of niet.
Kan je mijn exe in jouw batch file uitvoeren
en daarna de variabele gebruiken in jouw batch file.

Overgens kan je ook deze batch file maken:

@echo off
rem Plaats datum in temp.bat,
rem geef enter bij vraag nieuwe datum.
rem (Het | teken zit boven de \ bij Enter)
echo.|date>temp.bat

rem textrep is een zoek en vervang programmaatje
rem die moet je even op internet zoeken.
rem vervangt Huidige datum: 23-05-2002
rem door SET Datum=23-05-2002
textrep temp.bat "Huidige datum: " "SET Datum="

rem Vul de variable Datum met 23-05-2002
call temp.bat
del temp.bat

rem Onderstaande aanpassen aan jouw situatie
rem Maak directory c:\backup\23-05-2002
rem Copieer c:\data daar naar toe.
md c:\backup
md c:\backup\%Datum%
copy c:\data c:\backup\%Datum%

P4-3.2GHz Asus P4C800 Deluxe ATI-AIW Radeon 512MB 360GB


Verwijderd

Topicstarter
Enigste wat ik met quickbasic heb gemaakt is een exe die
print date$ doet. Ik wil dus nu deze output (de datum) opvangen in een batch als een variabele om vervolgends zo een map aan te maken met de huidige datum.

Het is me ooit wel eens gelukt om dit te realiseren zonder al te veel moeite of andere programma's te gebruiken. Alleen tjah ... :D (ook maar een student he)

<cjdijk>
mijn mailadres is ruyterkamp@tebenet.nl
</cjdijk>

echo.|date>temp.bat

Deze had ik trouwens ook al eens geprobeerd met mijn exe want die output alleen 23-05-2002, maar op 1 of andere manier pakt hij die variabele niet in de batch mee maar set hem wel in dos zelf. Heel vaag!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 07-09 09:33

Dido

heforshe

Je wilt een map directory (DOS :) ) aanmaken met de datum in de naam? Waarom doe je dat dan niet vanuit je QuickBasic programmaatje? Moet kunnen als ik me goed herinner... Dan moet je misschien nog wat info meegeven aan je programma, maar da's niet zo moeilijk lijkt me.

Wat betekent mijn avatar?


Verwijderd

Topicstarter
Op donderdag 23 mei 2002 15:43 schreef Dido het volgende:
Je wilt een map directory (DOS :) ) aanmaken met de datum in de naam? Waarom doe je dat dan niet vanuit je QuickBasic programmaatje? Moet kunnen als ik me goed herinner... Dan moet je misschien nog wat info meegeven aan je programma, maar da's niet zo moeilijk lijkt me.
Maar dan zit ik meteen vast aan de mappen( eeuhmm dirs, sorry :)). Dit is niet echt handig. Of kan je ook iets maken dat je b.v. "datum c:\backup" uitvoert en hij de map(DIR! omg) c:\backup\23-05-02 aanmaakt. Dan is het wel flex :)

Ik zal wel eens even neuzen. Alleen weet ik zelf weinig van het programmeren in quickbasic.

EDIT - ok laat maar, werkt dus ook niet. Want ik wil dus mijn backups in de map gooien dus zal ik alsnog die datum als variabele moeten hebben :'(

  • LauPro
  • Registratie: Augustus 2001
  • Laatst online: 05-09 11:09

LauPro

Prof Mierenneuke®

Je kan binnen Quickbasic ook met 'Shell' werken. Ik deed dit soort acties dan altijd zo:
code:
1
2
3
4
5
6
7
8
9
PRINT "Datum " + DATE$

MKDIR "c:\Backup\" + DATE$

SHELL "c:"
SHELL "cd\"
SHELL "cd Data"

SHELL "copy *.* c:\Backup\" + DATE$

Misschien handiger om XCOPY met de parameter /S te gebruiken dan gaan ook alle submappen mee e.d.. (Bij de uitleg staat ook 'submappen' :P)

Inkoopacties - HENK terug! - Megabit
It is a war here, so be a general!


  • cjdijk
  • Registratie: Oktober 2001
  • Laatst online: 05-09 14:44

cjdijk

Hans favoriete radiostation

Op donderdag 23 mei 2002 15:36 schreef NeCCie het volgende:
Enigste wat ik met quickbasic heb gemaakt is een exe die
print date$ doet. Ik wil dus nu deze output (de datum) opvangen in een batch als een variabele om vervolgends zo een map aan te maken met de huidige datum.

Het is me ooit wel eens gelukt om dit te realiseren zonder al te veel moeite of andere programma's te gebruiken. Alleen tjah ... :D (ook maar een student he)

<cjdijk>
mijn mailadres is ruyterkamp@tebenet.nl
</cjdijk>

echo.|date>temp.bat

Deze had ik trouwens ook al eens geprobeerd met mijn exe want die output alleen 23-05-2002, maar op 1 of andere manier pakt hij die variabele niet in de batch mee maar set hem wel in dos zelf. Heel vaag!
Ik heb je de code, exe en uitleg gemaild.
Overgens kwam ik erachter dat mijn basic compiler
de amerikaanse datum gebruikt,
dus eerst de maand, dan dag en jaar.
Dus vandaar die MID$ LEFT$ EN RIGHT$
Is nu gewoon de nederlandse notatie.

Verder merkte ik dat als ik het SHELL
commando gebruikte de variabele weer "weg"
was zodra de exe file afgerond was.
Vandaar dat ik nu een batch file aan laat maken
door het exe bestand.
Die batch file opstarten vanuit jouw eigen batch file.

Even voor de rest, de uitleg.

Datum.bas=Datum.exe
OPEN "SETDATUM.BAT" FOR OUTPUT AS #1
PRINT #1, "@ECHO OFF"
PRINT #1, "SET Datum="+MID$(DATE$,4,3)+LEFT$(DATE$,3)+RIGHT$(DATE$,4)
PRINT #1, "ECHO SET Datum=%Datum%"
CLOSE #1
PRINT "Bestand SETDATUM.BAT aangemaakt"

Een voorbeeld voor jouw backup batch file C:\BACKUP\BACKUP.BAT
@ECHO OFF
REM Vul de variabele Datum
C:
CD \BACKUP
C:\BACKUP\DATUM.EXE
CALL C:\BACKUP\SETDATUM.BAT

REM Maak de backup
MD C:\BACKUP\%Datum%
XCOPY C:\DATA C:\BACKUP\%Datum% /S

REM Opschonen variabele
SET Datum=
DEL C:\BACKUP\SETDATUM.BAT

P4-3.2GHz Asus P4C800 Deluxe ATI-AIW Radeon 512MB 360GB


  • cjdijk
  • Registratie: Oktober 2001
  • Laatst online: 05-09 14:44

cjdijk

Hans favoriete radiostation

Op donderdag 23 mei 2002 17:30 schreef NeCCie het volgende:

[..]

Maar dan zit ik meteen vast aan de mappen( eeuhmm dirs, sorry :)). Dit is niet echt handig. Of kan je ook iets maken dat je b.v. "datum c:\backup" uitvoert en hij de map(DIR! omg) c:\backup\23-05-02 aanmaakt. Dan is het wel flex :)

Ik zal wel eens even neuzen. Alleen weet ik zelf weinig van het programmeren in quickbasic.

EDIT - ok laat maar, werkt dus ook niet. Want ik wil dus mijn backups in de map gooien dus zal ik alsnog die datum als variabele moeten hebben :'(
Opvallend trouwens,
Ik gebruik zelf bij voorkeur ook bij voorkeur batch files.
Vanwege de flexibiliteit.
Kan je zeer simpel en snel een wijziging aanbrengen.
Zonder dat je hoeft te compileren.
Dus gewoon een beperkte exe file om dat voor elkaar
te krijgen wat niet in een batch file lukt,
maar de rest wel in een batch file.

Overgens die regel echo.|date>temp.bat
werkt niet zonder meer zonder aanpassing.
Hij zet namelijk in temp.bat:
"Huidige datum: vr 24-05-2002
Voer de nieuwe datum in: (dd-mm-jj)"

En dat levert een foutmelding op.
Je behoort dan nog een zoek en vervang exe bestandje
te gebruiken om de tekst "Huidige datum:"
te vervangen door "SET Datum="

P4-3.2GHz Asus P4C800 Deluxe ATI-AIW Radeon 512MB 360GB


Verwijderd

Topicstarter
:) Tis gelukt! Eindelijk

Denk dat mijn grote fout was dat ik geen call functie gebruikt had. Vandaar dus dat hij %datum% niet in de batch zag.

Nogmaals bedankt voor de hulp. *cheers*
Pagina: 1