• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

VBS - program gubi strony

0 głosów
281 wizyt
pytanie zadane 25 marca 2016 w Visual Basic przez Gazunek Nowicjusz (160 p.)

Czesc,

mam skrypt ktory pomaga mi w pracy. Za pomoca programu Irfan dzieli pliki .tif na jednostronicowe po czym laczy je w jeden wielki .tif porozdzielany separatorami. Problem jednak w tym, ze przy wiekszej ilosci plikow gubi mi niektore strony. Zauwazylem ze gdy plik wynikowy na polskie znaki skrypt generuje mi dwa pliki wynikowe. Jeden wlasciwy a drugi ze stronami ktore uciekly.

 

dir_temp = "plikiTmp"
file_separator = InputBox("Plik separatora:", "IRFAN_APP", "C:\Users\zyskg\Desktop\Separatory\serar_bols.tif")
file_done = InputBox("Plik wynikowy:", "IRFAN_APP", "C:\Users\zyskg\Desktop\" & replace(date , "-", "_") & "_BOLS.tif")
file_ini = "\\vfs01\profiles\zyskg\My Documents\Archiwum\raporty\"
file_counter = 0

Set fso = CreateObject("Scripting.FileSystemObject")
Set WshShell = WScript.CreateObject("WScript.Shell")

if fso.FolderExists(dir_temp) then
   fso.DeleteFolder dir_temp, true
   fso.CreateFolder(dir_temp)
else
   fso.CreateFolder(dir_temp)
end if

dir_curr = fso.GetAbsolutePathName(".") 
If Right(dir_curr, 1) <> "\" Then dir_curr = dir_curr & "\"

'główna pętla, przeszukuje katalog w którym jest plik IRFAN.vbs w poszukiwaniu plikow TIF
Set fld = fso.GetFolder(dir_curr)
For Each fil In fld.Files
   if LCase(Right(fil.Name, 3)) = "tif" or LCase(Right(fil.Name, 4)) = "tiff" then
      file_counter = file_counter + 1

      'rozpakowanie znalezionego pliku tif na jednostronicowe pliki
      IrfanCommand = "C:\Program Files (x86)\IrfanView\i_view32.exe " & dir_curr & fil.Name & "/extract=(" & dir_curr & dir_temp & "\" & " ,tif)/killmesoftly"
      Set s01 = WshShell.Exec(IrfanCommand)
      Do While (s01.Status = 0)
         WScript.Sleep 100
      Loop
      
      'pętla odnajduje plik pierwszej strony i dodaje tekst
      Set fld_t = fso.GetFolder(dir_temp)
      For Each fil_t In fld_t.Files
         if LCase(Right(fil_t.Name, 8)) = "0000.tif" then
            temp_file_name = fil_t.name
            fso.MoveFile dir_curr & dir_temp & "\" & temp_file_name, dir_curr & dir_temp & "\" & replace(temp_file_name, "_page_0000", "")
            IrfanCommand = "C:\Program Files (x86)\IrfanView\i_view32.exe " & dir_curr & dir_temp & "\" & replace(temp_file_name, "_page_0000", "") & "/ini=""" & file_ini & """ /advancedbatch /convert=" & dir_curr & dir_temp & "\" & temp_file_name & "/killmesoftly"
            Set s01 = WshShell.Exec(IrfanCommand)
            Do While (s01.Status = 0)
               WScript.Sleep 100
            Loop
            fso.DeleteFile dir_curr & dir_temp & "\" & replace(temp_file_name, "_page_0000", ""), true
            set fld_t = nothing
            set fil_t = nothing
            exit for
         end if
      Next
      
      'dodanie separatora
      IrfanCommand = "C:\Program Files (x86)\IrfanView\i_view32.exe " & file_separator & "/append=" & file_done & " /silent /killmesoftly"
      Set s01 = WshShell.Exec(IrfanCommand)
      Do While (s01.Status = 0)
         WScript.Sleep 100
      Loop
      
      'pętla przegląda folder tymczasowy i dodaje je do pliku wynikowego za separatorem
      Set fld_t = fso.GetFolder(dir_temp)
      For Each fil_t In fld_t.Files
         IrfanCommand = "C:\Program Files (x86)\IrfanView\i_view32.exe " & dir_curr & dir_temp & "\" & fil_t.Name & "/append=" & file_done & " /silent /killmesoftly"
         Set s01 = WshShell.Exec(IrfanCommand)
         Do While (s01.Status = 0)
            WScript.Sleep 100
         Loop
      Next
      'usunięcie plików tymczasowych
      fso.DeleteFile dir_temp & "\*", true
   end if
Next
'usunięcie folderu tymczasowego
fso.DeleteFolder dir_temp, true
set fso = nothing
set WshShell = nothing
set fld = nothing
set fil = nothing
set fld_t = nothing
set fil_t = nothing

msgbox "Przetworzonych zostało: " & file_counter & " plków.", o, "IRFAN_APP"

 

Zaloguj lub zarejestruj się, aby odpowiedzieć na to pytanie.

Podobne pytania

0 głosów
2 odpowiedzi 1,258 wizyt
pytanie zadane 21 września 2018 w Visual Basic przez Jiin Obywatel (1,390 p.)
0 głosów
0 odpowiedzi 215 wizyt
pytanie zadane 28 listopada 2016 w Visual Basic przez rafi-vir Nowicjusz (140 p.)
0 głosów
1 odpowiedź 1,190 wizyt
pytanie zadane 19 listopada 2018 w Bezpieczeństwo, hacking przez Michał Samolewski Bywalec (2,240 p.)

93,776 zapytań

142,732 odpowiedzi

323,384 komentarzy

63,379 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj

Twierdza Linux. Bezpieczeństwo dla dociekliwych

Aby uzyskać rabat -10%, użyjcie kodu pasja-linux, wpisując go w specjalne pole w koszyku.

...