[BATCH] Kopieren naar een variabele filename

Pagina: 1
Acties:
  • 492 views sinds 30-01-2008
  • Reageer

  • Banaan
  • Registratie: Maart 2000
  • Laatst online: 19-05 12:27
Ik heb als tijdelijke tussenoplossing een batchfile nodig die voor mij een bestand hernoemd. Nu moet de naam van dit bestand variabel zijn, aangezien dit elke dag gaat gebeuren. Daarom lijkt het mij het makkelijkst om de filename de huidige datum te laten zijn. Nu is het geen probleem om de datum op te slaan in een variabele (zie code hieronder), maar ik krijg het niet voor elkaar om dit de bestandsnaam te maken.
code:
1
2
3
4
5
@Echo off
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET DATE=%%B
ren test1.xls %DATE%.xls
copy test2.xls test1.xls
pause

Iemand enig idee? Weet iemand trouwens ook of het mogelijk is om een bestandsnaam te gebruiken in een batchbestand met spaties erin? Bestandsnamen langer dan 8 tekens kan, maar hoe met spaties?

Alvast bedankt!

P.S. De batch-file moet draaien op NT4/W2K

  • cobratbq
  • Registratie: Maart 2001
  • Laatst online: 17-12-2015
Een batch bestand met spaties kan alleen in 32bit dos prompt, dus geen puur dos. Je moet dan om het bestand haakjes zetten, dus: "bestand naam.ext" en dan zietie het als 1 bestandsnaam, waarbij de haakjes niet meegerekend worden.

One ring to rule them all, one ring to find them, one ring to bring them all, and in darkness bind them...


  • Banaan
  • Registratie: Maart 2000
  • Laatst online: 19-05 12:27
Thnx.. dat werkt iig nu al.. nu zegmaar mn hoofdprobleem nog.. :)

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Kun je niet zeggen:

copy test2.xls %DATE%.xls

* NetForce1 doet ook maar een gokje :)

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


Verwijderd

Mag ik opmerken dat je hiervoor veel beter Perl (Activestate Perl voor win32) kunt gebruiken? Ik zou haast zeggen, dat is gemaakt om zulke dingen mogelijk te maken (en het heeft ook nogal wat meer mogelijkheden dan batch).

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Op dinsdag 29 januari 2002 15:00 schreef Zef het volgende:
Mag ik opmerken dat je hiervoor veel beter Perl (Activestate Perl voor win32) kunt gebruiken? Ik zou haast zeggen, dat is gemaakt om zulke dingen mogelijk te maken (en het heeft ook nogal wat meer mogelijkheden dan batch).
Ik heb als tijdelijke tussenoplossing een batchfile nodig

Mag ik opmerken dat niet iedereen in Perl kan programmeren?

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • BlaTieBla
  • Registratie: November 2000
  • Laatst online: 09:02

BlaTieBla

Vloeken En Raak Schieten

Op dinsdag 29 januari 2002 14:58 schreef ddewit het volgende:
Kun je niet zeggen:

copy test2.xls %DATE%.xls

* BlaTieBla doet ook maar een gokje :)
%DATE% geeft een datum met characters die illegaal zijn in een bestandsnaam (/,: etc). Hier zal je dus iets anders voor moeten verzinnen.
Waarschijnlijk afhankelijk van de regional settings binnen je OS.

leica - zeiss - fuji - apple | PSN = Sh4m1n0


Verwijderd

Op dinsdag 29 januari 2002 15:09 schreef ddewit het volgende:

[..]

Ik heb als tijdelijke tussenoplossing een batchfile nodig
Jij? Banaan toch? :+ (Schreeuwen helpt niet trouwens, het was gewoon een suggestie geen aanval oid).
Mag ik opmerken dat niet iedereen in Perl kan programmeren?
En dus? Als iemand vaak dergelijke dingen wil doen (sysadmin oid) is het de moeite waard er eens naar te kijken.

  • NetForce1
  • Registratie: November 2001
  • Laatst online: 23-03 10:29

NetForce1

(inspiratie == 0) -> true

Op dinsdag 29 januari 2002 15:22 schreef Zef het volgende:

[..]

Jij? Banaan toch? :+ (Schreeuwen helpt niet trouwens, het was gewoon een suggestie geen aanval oid).
Ja, sorry hoor was niet als schreewen bedoeld, maar zodat het wat meer op zou vallen :+
[..]

En dus? Als iemand vaak dergelijke dingen wil doen (sysadmin oid) is het de moeite waard er eens naar te kijken.
Zeker, maar als je nu een tijdelijke oplossing nodig hebt, duurt het denk ik te lang om eerst Perl te gaan leren. Of het moet een van de basisfuncties zijn natuurlijk.

* NetForce1 kent Perl ook niet *D

De wereld ligt aan je voeten. Je moet alleen diep genoeg willen bukken...
"Wie geen fouten maakt maakt meestal niets!"


  • Woudloper
  • Registratie: November 2001
  • Niet online

Woudloper

« - _ - »

Ik heb dit ooit opgelost met .vbs script bestanden onder W2K...

Dat werkt erg goed, omdat ik gebruik wilde maken van UNC paden en deze niet ondersteunt worden door DOS...
PHP:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
<?
Function CopyFunction()

   COPYTHISFILE = "c:\apps\test.txt"

   Set FSO= CreateObject("Scripting.FileSystemObject")

   'Copy the File...'
   FSO.CopyFile COPYTHISFILE, &amp;amp;amp; "C:\Somewhere"

End Function

Call CopyFunction()
?>

PHP voor de kleurtjes

Om een variabele op te vragen moet je er zoiets tussen zetten...
code:
1
2
3
   Set WshShell = CreateObject("WScript.Shell")
   Set WshSysEnv = WshShell.Environment("PROCESS")
   VARIABELE = WshSysEnv("VARIABELE")

Je kan natuurlijk ook een .vbs functie gebruiken die het hernoemt naar de datum... etc... Maar dan moet je even zoeken... :+



/edit: nog wat toegevoegd ivm variabele

  • elevator
  • Registratie: December 2001
  • Niet online

elevator

Officieel moto fan :)

Op dinsdag 29 januari 2002 11:19 schreef Banaan het volgende:
code:
1
2
3
4
5
@Echo off
FOR /F "TOKENS=1* DELIMS= " %%A IN ('DATE/T') DO SET DATE=%%B
ren test1.xls %DATE%.xls
copy test2.xls test1.xls
pause

Iemand enig idee? Weet iemand trouwens ook of het mogelijk is om een bestandsnaam te gebruiken in een batchbestand met spaties erin? Bestandsnamen langer dan 8 tekens kan, maar hoe met spaties?

Alvast bedankt!

P.S. De batch-file moet draaien op NT4/W2K
volgens mij is %DATE% al gedeclareerd in 2000. Misschien eens %DATE2% pakken? :-)
Voeg anders eens een "echo %date%" toe aan je script en zie wat eruitkomt?

  • Banaan
  • Registratie: Maart 2000
  • Laatst online: 19-05 12:27
Op dinsdag 29 januari 2002 22:13 schreef elevator het volgende:

[..]

volgens mij is %DATE% al gedeclareerd in 2000. Misschien eens %DATE2% pakken? :-)
Voeg anders eens een "echo %date%" toe aan je script en zie wat eruitkomt?
Dat is het probleem niet, date wordt gewoon netjes gevuld met de datum. Vandaag is dus 29-01-02.. en dat is een valid filename. Alleen kan je het dus niet op die manier toewijzen in een batchbestand. Maar hoe dan wel?

En zoals iemand al zo aardig voor mij zei (:P), het is maar tijdelijk en (als het goed is) eenmalig, dus wil liever niet de oplossing zoeken in perl/vbs etc etc.

  • hufkes
  • Registratie: Maart 2000
  • Laatst online: 25-05 00:27

hufkes

nee, daar staat niet hufter!

kan je niet iets doen als
code:
1
type test1.xls >> %DATE%.xls

wellicht dat die wel werkt?
Wat voor een foutmelding geeft 'ie trouwens?

Onderstaande signature is al >20jr oud ***hoe dan***
---
Het internet is een veelbelovend medium
....dat maar heel weinig van zijn beloftes nakomt.
Wat weg is... raak je nooit meer kwijt :P


  • Banaan
  • Registratie: Maart 2000
  • Laatst online: 19-05 12:27
Wat nachtrust heeft blijkbaar geholpen, aangezien ik nu de oplossing heb :)

Het antwoord lag eigenlijk al in het antwoord op de 2e vraag, want als je namelijk "" er omheen zet, dan werkt het wel. Dus hierbij is mijn vraag beantwoord!
Pagina: 1