Leser: 22
/p DATUMSDIFF=<datumsdiff.txt
set /p DATUMSDIFF=<datumsdiff.txt
1 2 3 4 5 6 7 8 9 10 11 12
#!/usr/bin/perl use strict; use warnings; use Data::Dumper; use Date::Calc qw/Mktime/; my $t1 = Mktime(2012,9,2, 19,58,0); my $t2 = Mktime(2012,9,1, 20,0,0); my $diff = $t1-$t2; print $diff . "\n";
Guest FrederickDas Skript gibt aber nichts in eine Datei aus wie es oben geschrieben wurde, oder?
1
2
3
4
$dateinput = read-host "Datum:"
$then = [dateTime]::Parse($dateinput)
$now = [dateTime]::Now
($then - $now).Seconds
1
2
3
4
5
6
7
use Modern::Perl;
use DateTime;
my $past = DateTime->new(year => 2012, month => 9, day => 3, hour => 19, minute => 39, time_zone => 'Europe/Berlin');
my $jetzt = DateTime->now();
my $delta = $jetzt->subtract_datetime_absolute($past);
say $delta->in_units( 'seconds' );
Guest FrederickEs soll einfach das Ergebnis der Berechnung an eine bestimmte Stelle in einer bestehenden Batch eingefügt und die Batch gestartet werden. Wie, ist dabei egal.
2012-09-04T10:43:39 biancaSo herum wird das m.E. schonmal garnicht gehen, weil du einen Wert nicht an einen nicht laufenden Prozess übergeben kannst.
Der Batch müsste das Script aufrufen und den Rückgabewert für die weitere Bearbeitung in einer Variable speichern.
Aber mit Standard Windows Batch geht das nicht.
QuoteFOR /F ["options"] %variable IN (`command`) DO command [command-parameters]
2012-09-04T12:44:15 RaubtierNicht? Kann man nicht einfach %ERRORLEVEL% auslesen?
Guest FrederickEs soll einfach das Ergebnis der Berechnung an eine bestimmte Stelle in einer bestehenden Batch eingefügt und die Batch gestartet werden. Wie, ist dabei egal.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25
#!/usr/bin/perl use strict; use warnings; use DateTime; #InputFormat: JJJJ.MM.DD-HH:MM:SS my $date=shift(@ARGV) // '2005.02.25-00:00:00'; my @date=$date=~/^\s*(\d{,4})\.(\d{,2})\.(\d{,2})(?:-(\d{,2}):(\d{,2}):(\d{,2}))$/; push(@date,0)while(@date<6); $date[0]+=1900 if(length($date[0])<3); $date[1]=1 if($date[1]<1); $date[2]=1 if($date[2]<1); my $past = DateTime->new( year => shift(@date), month => shift(@date), day => shift(@date), hour => shift(@date), minute => shift(@date), time_zone => 'Europe/Berlin', ); my $jetzt = DateTime->now(); my $delta = $jetzt->subtract_datetime_absolute($past); print $delta->in_units( 'seconds' );
1
2
3
SET diff=0
FOR /F "options" %%I IN (`perl delta.pl -- 2010:10:10-10.10.10`) DO SET diff=%%I
"C:\Program Files\VirtualBox\VBoxManage.exe" modifyvm "Beta-VM" --biossystemtimeoffset %diff%
Guest FrederickWas mir jetzt noch fehlt, ist eine Möglichkeit das Ergebnis in eine Batch zu bringen.
"C:\Program Files\VirtualBox\VBoxManage.exe" modifyvm "Beta-VM" --biossystemtimeoffset -27993600000
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16
use 5.012; use warnings; use POSIX qw(mktime difftime); use constant { VBoxManage => 'C:\Program Files\VirtualBox\VBoxManage.exe', # Enter correct date here, example is 1913-12-11 14:15:16 UTC reftime => mktime(16, 15, 14, 11, 12, 1913) }; my $delta = difftime(time, reftime); if (system(VBoxManage, 'modifyvm', 'Beta-VM', '--biossystemtimeoffset', $delta) != 0) { die "Failed to run VBox management command"; }
QuoteUse of uninitialized value in subroutine entry at E:\neu.pl line 12.
Guest FredrickDa kommt
QuoteUse of uninitialized value in subroutine entry at E:\neu.pl line 12.
[...]