x-kom hosting

Pomoc w kodzie pliku *.bat

LeEpicPotherb
utworzono
utworzono

Witam mam problem z rozszyfrowaniem tego skryptu, prosił bym o pomoc i przeanalizowanie co oznacza każda z linijek.

 

@echo off

set mydate=%date:~-4%-%date:~-7,2%-%date:~-10,2%

set mytime=%time:~-11,2%-%time:~-8,2%-%time:~-5,2%

move plik.txt %mydate%_%mytime: =0%.txt

copy *.txt \\devwschsdaten\teams\hostdruck\plik

del *.txt

Matematyk0
komentarz
komentarz

Po kolei:

  • @echo off - wyłącza pokazywanie komunikatów w oknie konsoli
  • set mydate=%date:~-4%-%date:~-7,2%-%date:~-10,2% - przypisuje zmiennej mydate datę w formacie RRRR-MM-DD (rok, miesiąc, dzień)
  • set mytime=%time:~-11,2%-%time:~-8,2%-%time:~-5,2% - przypisuje zmiennej mytime godzinę w formacie HH-MM-SS (godzina, minuta, sekunda)
  • move plik.txt %mydate%_%mytime: =0%.txt - zastępuje (nadpisuje) plik.txt plikiem o nazwie w formacie DATA_GODZINA (zgodnie z tym, co wyżej - RRRR-MM-DD_HH-MM-SS.txt) i przenosi do niego dane z plik.txt
  • copy *.txt \\devwschsdaten\teams\hostdruck\plik - kopiuje wszystkie pliki z rozszerzeniem .txt z obecnej lokacji do folderu \\devwschsdaten\teams\hostdruck\plik
  • del *.txt - usuwa wszystkie pliki z rozszerzeniem .txt z obecnej lokacji

 

LeEpicPotherb
komentarz
komentarz (edytowane)

Aha no to rozumiem, ale nie wiem jeszcze jednej rzeczy której znaleźć nie mogłem. Zawsze używam tego set mytime ale nie rozumiem czemu jest tam dokładnie to -11,2 -8,2 i -5,2. Wiem, że to ustawia czas, tylko nigdzie nie znalazłem dokładnego opisu tych dokładnych wartości. Czy jest to po prostu utarta formuła na przypisanie czasu i zawsze wygląda to identycznie?

I spróbowałem skrócić ten kod, o tak:

@echo off

set mytime=%time:~-11,2%-%time:~-8,2%-%time:~-5,2%

move "\\devwschsdaten\teams\hostdruck\plik.txt" "\\devwschsdaten\teams\hostdruck\Kopie\plik_%date%_%mytime%.txt" (tylko jak się można domyśleć wywala błąd o złej skladni)

"\\devwschsdaten\teams\hostdruck\Kopie\plik_%date%.txt" ( tak oczywiście działa, ale musze jeszcze dołączyć do tego czas)

 

Edytowane przez LeEpicPotherb
Matematyk0
komentarz
komentarz

Te wartości to wskazanie ilości miejsc, które ma przypisać do zmiennej - -11,2 - dwa miejsca od jedenastego - godzina, %- (minus), -8,2 - dwa miejsca od ósmego (minuty), %- (minus), -5,2 - dwa miejsca od piątego (sekundy), można by było dopisać jeszcze %-%time:~-2,2 i dostać setne sekundy. Sposobów na przypisanie jest sporo, możesz sobie poczytać tutaj (po angielsku): http://stackoverflow.com/questions/1192476/format-date-and-time-in-a-windows-batch-script

 

A co do skracania kodu - myślę, że to sztuka dla sztuki, można przecież w miejsce %mytime% w nazwie pliku wkleić zawartość zmiennej, czyli %time:~-11,2%-%time:~-8,2%-%time:~-5,2% ;)

LeEpicPotherb
komentarz
komentarz

Aha okej, ale dalej jest jakiś błąd w momencie dodania czasu do nazwy pliku bo cały czas wywala błąd składni.To jest przykładowa lokalizacja na której testuje czy kod działa:

move "C:\foler\plik.txt" "C:\folder2\plik_%date%_%time:~-11,2%-%time:~-8,2%-%time:~-5,2%"

Czyli błąd jest gdzieś tutaj plik_%date%_%time:~-11,2%-%time:~-8,2%-%time:~-5,2%"

Wciąż szukasz rozwiązania problemu? Napisz teraz na forum!

Możesz zadać pytanie bez konieczności rejestracji - wystarczy, że wypełnisz formularz.

×
×
  • Dodaj nową pozycję...

Powiadomienie o plikach cookie

Strona wykorzystuje pliki cookies w celu prawidłowego świadczenia usług i wygody użytkowników. Warunki przechowywania i dostępu do plików cookies możesz zmienić w ustawieniach przeglądarki.