Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[VBS] wyszukanie / zmiana nazwy pliku

Idź do strony Poprzedni  1, 2, 3, 4  Następny

 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Inne języki skryptowe, przetwarzanie danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
Tomek S



Dołączył: 10 Gru 2005
Posty: 1960

PostWysłany: Sro Cze 04, 2008 3:33 pm      Temat postu: Odpowiedz z cytatem Pisownia

Male nieporozumienie, zrozumialem ze pry58.043 to nazwa jednego z folderow
FolderZ to Folder zrodlowy. W 5 linii wprowadz pelna sciezke do twoich plikow bez \ na koncu np "C:\pliki"

Zmien tez linijke
Kod:
RegExp.Pattern="\.txt$"

na
Kod:
RegExp.Pattern="\.\d{3}$"

jesli rozszerzenie pliku zawiera zawsze 3 cyfry
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
raffe



Dołączył: 04 Cze 2008
Posty: 16

PostWysłany: Sro Cze 04, 2008 3:48 pm      Temat postu: Odpowiedz z cytatem Pisownia

ok,
dzieki za odpowiedzi, zerkne na to i jak cos to pomecze cie jeszcze jesli nie bedzie to dla Ciebie uciazliwe.

dzieki
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
raffe



Dołączył: 04 Cze 2008
Posty: 16

PostWysłany: Czw Cze 05, 2008 8:46 am      Temat postu: Odpowiedz z cytatem Pisownia

dzieki bardzo
wyszukuje i kopiuje jak nalezy,
Mam jeszcze dwa pytanka:
1. jak zmienic kod
Kod:
String="Druk nr\."

zeby wyszukiwal nie calosc tekstu "Druk nr." tylko jego czesc i kopoiowal...
2. Pryjmijmy ze calosc tekstu w danym pliku to "Druk nr. 2345\08"
Czy jest mozliwosc wyszukania kawalka tekstu "Druk nr." i potem zapisania tego calego pliku tak aby w nazwie mial caly ten tekst: "Druk nr. 2345\08".
Dzieki
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Tomek S



Dołączył: 10 Gru 2005
Posty: 1960

PostWysłany: Czw Cze 05, 2008 9:12 am      Temat postu: Odpowiedz z cytatem Pisownia

Tu znajdziesz opis i przyklady zastosowanego w kodzie wyrazenia regularnego.

Kod:
'On Error Resume Next

Dim Fso,Tso,Folder,Files,FName,FolderZ,FolderD,Item,Tekst

FolderZ="C:\pliki"
FolderD="C:"

Set RegExp=CreateObject("VBScript.RegExp")
Set Fso=CreateObject("Scripting.FileSystemObject")
Set Folder=Fso.GetFolder(FolderZ)
Set Files=Folder.Files

RegExp.Global=True
RegExp.IgnoreCase=True

For Each Item in Files
  RegExp.Pattern="\.\d{3}$"
  If RegExp.Test(Right(Item,4)) Then
     Set Tso=Fso.OpenTextFile(Item,1)
     Tekst=Tso.ReadAll
     RegExp.Pattern="Druk nr\. \d{4}/\d{2}"
     If RegExp.Test(Tekst) Then
        FName=Replace(RegExp.Execute(Tekst)(0),"/","-")
        Fso.CopyFile Item,FolderD&"\"&FName,-1
        'Fso.CopyFile Item,FolderD&"\"&FName&".txt",-1
     End If
  End If
Next

Set RegExp=Nothing
Set Fso=Nothing
Set Folder=Nothing
Set Files=Nothing
Set Tso=Nothing
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
yesz_u



Dołączył: 09 Mar 2006
Posty: 1

PostWysłany: Pią Lip 11, 2008 9:05 pm      Temat postu: Odpowiedz z cytatem Pisownia

Witam,
Przylacze sie rowniez do tematu.
Mam pliki o roznych nazwach w jednym folderze np. IMP198429991.txt, IMP198429988.txt, IMP198429985.txt. Pliki maja stala czesc nazwy - "IMP198" lecz ich dalsza czesc nazwy lest nadawana w nieznany mi sposob. Chcialbym aby skrypt przeszukiwal pliki i kopiowal je do podfolderu o nazwie daty terazniejszego dnia, folderu o nazwie roku-miesiaca i zmienial ich nazwy wg wyszukanej czesci.
Kazdy plik w 2 lini zawiera ciag znakow "SKLEP : 999" i chcialbym aby ten nr byl nazwa kopiowanego pliku.
np. plik IMP198429991.txt zawiera nr 999 i mialby zostac przekopiowany jako 999.txt do katalogu c:\2008-07\2008-07-11.

Probowalem wykorzystac powyszszy skrypt ale po moich modyfikacjach tworzyl sie pusty plik o nazwie "SKLEP " bez rozszerzenia, ktorego nie moge otworzyc - notatnik nie moze go znalezc i proponuje jego utworzenie i dalej pozostawal problem z zapisywaniem w folderach z data.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Gość






PostWysłany: Sob Lip 12, 2008 10:10 pm      Temat postu: Odpowiedz z cytatem Pisownia

Po dluzszym posiedzeniu i zapozaniu sie z 'regular expression' udalo mi sie uzyskac zamiezony cel, lecz mam pewne watpliwosci czy kod jest wystarczajaco zoptymalizowany - np. problemem bylo(jest) czytanie tylko drugiej lini pliku i wg mojego rozwiazania odbywa sei to za pomoca 2 krokowej petli - ostatnia jest czyatana wlasciwa linia(2) i przypisywana jest jako Tekst. Prosze zernijcie na to wprawniejszym okiem czy sa jakies punkty do poprawy.

Kod:
'On Error Resume Next

Dim Fso,Tso,Folder,Files,FName,FolderZ,FolderD,Item,Tekst,i,Miesiac

If Month(Date()) <10 then Miesiac = "0"&Month(Date())

FolderZ="C:\Temp"
FolderD="C:\Dane\"&Year(Date())&"-"&Miesiac&"\"&Date()

Set RegExp=CreateObject("VBScript.RegExp")
Set Fso=CreateObject("Scripting.FileSystemObject")
Set Folder=Fso.GetFolder(FolderZ)
Set Files=Folder.Files

RegExp.Global=True
RegExp.IgnoreCase=True

For Each Item in Files
  RegExp.Pattern="\.txt$"
  If RegExp.Test(Item) Then
     Set Tso=Fso.OpenTextFile(Item,1)
     For i=1 to 2
        Tekst = Tso.ReadLine
     Next
     RegExp.Pattern="SKLEP   : \d{3}"
     If RegExp.Test(Tekst) Then
        FName=Right(Replace(RegExp.Execute(Tekst)(0),"/","-"),3)
        Fso.CopyFile Item,FolderD&"\"&FName&".txt",-1
     End If
  End If
Next

Set RegExp=Nothing
Set Fso=Nothing
Set Folder=Nothing
Set Files=Nothing
Set Tso=Nothing
Powrót do góry
raffe



Dołączył: 04 Cze 2008
Posty: 16

PostWysłany: Czw Lip 31, 2008 8:23 am      Temat postu: Odpowiedz z cytatem Pisownia

Witam,
walcze caly czas ze skryptem ponizej. Wyszukuje mi dany string i kopiuje pliki ktore zawieraja ten tekst ale gdy w danym folderze sa pliki 0kb to skrypt wyrzuca komunikat: "proba zapisu poza koncem pliku".
Prosba o porade.

Kod:

Dim Fso
dim Tso
dim Folder
dim Files
dim FName
dim FolderZ
dim FolderD
dim Item
dim SzukajString
dim Tekst

FolderZ="C:\dane"
FolderD="C:\dokumenty\"
SzukajString="nr zamowienia"


Set RegExp=CreateObject("VBScript.RegExp")
Set Fso=CreateObject("Scripting.FileSystemObject")
Set Folder=Fso.GetFolder(FolderZ)
Set Files=Folder.Files

RegExp.Global=True
RegExp.IgnoreCase=True

For Each Item in Files
  RegExp.Pattern="\.\d{3}$"
  If RegExp.Test(Right(Item,4)) Then
     Set Tso=Fso.OpenTextFile(Item,1)
     Tekst=Tso.ReadAll
     RegExp.Pattern=SzukajString
     If RegExp.Test(Tekst) Then
        FName=Right(Item,Len(Item)-InStrRev(Item,"\"))
        Fso.CopyFile Item,FolderD&"\"&FName,-1
     End If
  End If
Next

Set RegExp=Nothing
Set Fso=Nothing
Set Folder=Nothing
Set Files=Nothing
Set Tso=Nothing

Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Tomek S



Dołączył: 10 Gru 2005
Posty: 1960

PostWysłany: Czw Lip 31, 2008 8:46 am      Temat postu: Odpowiedz z cytatem Pisownia

Nie testowale ale powinno dzialac. Item.Size zwraca nam dlugosc pliku

Kod:
...
For Each Item in Files
  If Item.Size Then
    RegExp.Pattern="\.\d{3}$"
    If RegExp.Test(Right(Item,4)) Then
       Set Tso=Fso.OpenTextFile(Item,1)
       Tekst=Tso.ReadAll
       RegExp.Pattern=SzukajString
       If RegExp.Test(Tekst) Then
         FName=Right(Item,Len(Item)-InStrRev(Item,"\"))
         Fso.CopyFile Item,FolderD&"\"&FName,-1
       End If
    End If
  End If
Next
...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
raffe



Dołączył: 04 Cze 2008
Posty: 16

PostWysłany: Czw Lip 31, 2008 8:52 am      Temat postu: Odpowiedz z cytatem Pisownia

ok, dziala
Dzieki piekne...
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
raffe



Dołączył: 04 Cze 2008
Posty: 16

PostWysłany: Czw Lip 31, 2008 8:58 am      Temat postu: Odpowiedz z cytatem Pisownia

jeszcze jedno pytanko:

w kompilatorze w lini:
Kod:
Fso.CopyFile Item,FolderD&"\"&FName,-1

wyswietla mi blad skladniowy.....

dzieki
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Inne języki skryptowe, przetwarzanie danych Wszystkie czasy w strefie CET (Europa)
Idź do strony Poprzedni  1, 2, 3, 4  Następny
Strona 2 z 4

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.18028 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |