Как создать вчера дата в пакете

Да, модуль Xorg позволяет Вам совместно использовать свои:0 (локальных) дисплеев. В/etc/X11/xorg.conf в разделе "Module" добавляют

    Load "vnc"

и в разделе "Screen" добавьте:

    Option "SecurityTypes" "VncAuth"
    Option "UserPasswdVerifier" "VncAuth"
    Option "PasswordFile" "/root/.vnc/passwd"

Действительно исследуйте другие опции для "UserPasswdVerifier". Сервер VNC будет, слушая на tcp порте 5900. Даже с помощью VPN я непосредственно не соединился бы с портом. Блокируйте весь non-localhost доступ и используйте туннель SSH.

3
задан 1 May 2012 в 00:22
7 ответов

Спасите себя от боли, используйте лучший язык!

Вот сценарий, который вам нужен в PowerShell:

$yesterday = [DateTime]::Today.AddDays(-1).ToString("yyMMdd")
copy \\server01\E$\LogFiles\IVR\bcR\??${yesterday}.* \\LBC\workgroup\cs\ftp\Team\bcR\
copy \\server02\E$\LogFiles\IVR\bcR\??${yesterday}.* \\LBC\workgroup\cs\ftp\Team\bcR\
copy \\server03\E$\LogFiles\IVR\bcR\??${yesterday}.* \\LBC\workgroup\cs\ftp\Team\bcR\
copy \\server04\E$\LogFiles\IVR\bcR\??${yesterday}.* \\LBC\workgroup\cs\ftp\Team\bcR\

Используйте эти инструкции , чтобы помочь вам запланировать копирование

4
ответ дан 3 December 2019 в 05:31

Поскольку получение вчерашней даты включает в себя различные границы (месяц, годы, високосные годы), это быстро становится немного сложнее, чем можно подумать. Приведенный ниже сценарий представляет собой небольшую модификацию этого сообщения и зависит от языковых настроек вашего компьютера (запустите DATE / T в командной строке).

@echo off

for /f "tokens=1" %%i in ('date /t') do set thedate=%%i

set yy=%thedate:~2,2%
set mm=%thedate:~5,2%
set dd=%thedate:~8,2%
echo Today    : %yy%%mm%%dd%

if %dd%==08 (
set dd=8 ) else (
if %dd%==09 (
set dd=9 ) )

if %mm%==08 (
set mm=8 ) else (
if %mm%==09 (
set mm=9 ) )

set /A dd=%dd% - 1
set /A mm=%mm% + 0

if /I %dd% GTR 0 goto DONE
set /A mm=%mm% - 1
if /I %mm% GTR 0 goto ADJUSTDAY
set /A mm=12
set /A yy=%yy% - 1

:ADJUSTDAY
if %mm%==1 goto SET31
if %mm%==2 goto LEAPCHK
if %mm%==3 goto SET31
if %mm%==4 goto SET30
if %mm%==5 goto SET31
if %mm%==6 goto SET30
if %mm%==7 goto SET31
if %mm%==8 goto SET31
if %mm%==9 goto SET30
if %mm%==10 goto SET31
if %mm%==11 goto SET30
if %mm%==12 goto SET31

goto ERROR

:SET31
set /A dd=31 + %dd%
goto DONE

:SET30
set /A dd=30 + %dd%
goto DONE

:LEAPCHK
set /A tt=%yy% %% 4
if not %tt%==0 goto SET28
set /A tt=%yy% %% 100
if not %tt%==0 goto SET29
set /A tt=%yy% %% 400
if %tt%==0 goto SET29

:SET28
set /A dd=28 + %dd%
goto DONE

:SET29
set /A dd=29 + %dd%

:DONE
if /i %dd% LSS 10 set dd=0%dd%
if /I %mm% LSS 10 set mm=0%mm%
set YESTERDAY=%yy%%mm%%dd%
echo Yesterday: %YESTERDAY%
1
ответ дан 3 December 2019 в 05:31

Выполнение подобных действий в командных файлах cmd является чисто мазохистским.

Но на любом другом языке это легко (bash под cygwin, возможно, powershell; даже vbscript может сделать это достаточно легко).

Так что просто используйте любой другой язык сценариев, чтобы либо сделать все это, либо записать временный командный файл и выполнить его.

Пример на perl:

#!/usr/bin/perl

use strict;
use Date::Format;

my $date = time2str("%y%m%d", time-86400);

for ( qw(01 02 03 04) ) {
    print "copy \\\\server$_\\E\$\\LogFiles\\IVR\\bcR\\??$date.* \\\\LBC\\workgroup\\cs\\ftp\\Team\\bcR\\", "\n";
}

Скажем, это называется writebatch .pl. Тогда ваш сценарий может быть чем-то вроде

perl writebatch.pl > "%TEMP%\dailycopies.cmd"
call "%TEMP%\dailycopies.cmd"

Или вы можете делать копии прямо из сценария. В Perl, вы должны использовать модуль File :: Copy. Если вы выберете любой другой инструмент для создания сценариев, он также будет иметь некоторую функцию копирования файлов.

1
ответ дан 3 December 2019 в 05:31

Если ваш основной сценарий имеет в сценарии Windows Shell Script, моим решением для этого было бы получение файла .CMD для создания [небольшого] файла .VBS в % TEMP%, затем запустите его с помощью вызова cscript.exe , заключенного в команду for / f . Фактический VBScript может затем использовать DateDiff . Я использовал эту технику на наших компьютерах с Windows Server 2003, где мы не развернули PowerShell по умолчанию. Если вы работаете на платформе Windows NT6, используйте PowerShell.

0
ответ дан 3 December 2019 в 05:31

Если вы можете использовать powershell, почему бы не сделать это с помощью этой простой строки:

powershell -Command [DateTime]::Now.ToString(\"yyyyMMdd_hhmmss\")

Это пример, который выводит фактические год, месяц, день, час, минуту и ​​секунду.

См. Последнюю часть, это нужный вам формат, поэтому вы можете получить его в желаемом формате.

Объяснение того, что он делает:

  • С .ToString ( ... ]) форматирует вывод [DateTime] :: Now в формате yyyyMMdd_hhmmss

И если вы хотите, чтобы это было в bacth-файле, вы можете использовать трюк для / f "delims =" см. пример:

for /f "delims=" %a in ('powershell -Command [DateTime]::Now.ToString(\"yyyyMMdd_hhmmss\"^)') do @echo DateTime is: %a

Если вы хотите использовать его внутри файла .BAT или .CMD, вы должны удвоить% следующим образом:

for /f "delims=" %%a in ('powershell -Command [DateTime]::Now.ToString(\"yyyyMMdd_hhmmss\"^)') do @echo DateTime is: %%a

Примечание для импорта: символ ^ - t избегайте видеть) как final, так же, как \ делает это "внутри powershell и т. д. Это мета-символ, который говорит, что следующий символ не должен интерпретироваться.

И если вам нужно datetime внутри переменной в пакете, см. это:

@ECHO OFF
for /f "delims=" %%a in ('powershell -Command [DateTime]::Now.ToString(\"yyyyMMdd_hhmmss\"^)') do @Set MyVariable=%%a
ECHO %MyVariable%

PD: Есть побочные эффекты при использовании PowerShell, он изменяет окно CMD размер и шрифт (и пусть они меняются после выхода), также иногда требуется несколько секунд для запуска такой простой команды.

1
ответ дан 3 December 2019 в 05:31

for / f "delims =" %% a in ('powershell -Command [DateTime] :: Today.AddDays ^ (- 1 ^). ToString ^ (\ "yyyyMMdd \" ^ )') делать ( установить onedayold = %% a )

-1
ответ дан 3 December 2019 в 05:31

Дата Время

for /f "delims=" %%a in ('powershell -Command [DateTime]::Now.AddDays^(-1^).ToString^(\"dd-MMM-yyyy\"^)') do @Set MyVariable=%%a

Только Дата

for /f "delims=" %%a in ('powershell -Command [DateTime]::Today.AddDays^(-1^).ToString^(\"dd-MMM-yyyy\"^)') do @Set MyVariable2=%%a
0
ответ дан 6 December 2020 в 04:41

Теги

Похожие вопросы