Automatyczne tworzenie pliku tekstowego

0

witam.
Czy może ktoś pomóc mi stworzyć programik który:

Musi czytać katalog i czekać na plik Data.txt, gdy pojawi sie plik Data.txt, ma tworzyć pusty plik tekstowy o nazwie Lock.txt.

pod windows jesli to ważne
i to wszystko...

dzięki za pomoc

0

Powiedz może jaki język wybrałeś (lub czy jest to obojętne) i co już napisałeś.

0

w zasadzie nie mam zielonego pojecia o programowaniu, ale musze miec taka funkcję do prawidłowego działania innego programu.
Jezyk obojetny, ma tylko robić swoje zadanie. Mozesz mi pomóc?

2

W Pythonie by to było coś takiego:

import time
import os.path

SLEEP_TIME_IN_SECS = 1
CHECKED_PATH = "tutaj ścieżka do folderu"
CHECKED_FILE = "Data.txt"
LOCK_FILE    = "Lock.txt"

while True:
    if os.path.isfile(os.path.join(CHECKED_PATH, CHECKED_FILE)):
        open(os.path.join(CHECKED_PATH, LOCK_FILE), "a").close()
        break
    else:
        time.sleep(SLEEP_TIME_IN_SECS)

Nad bardziej windowsowym rozwiązaniem nie chce mi się myśleć, nie administruję tym, więc nie wiem, w czym się na to skrypty pisze.

0

Dzięki,
jak mam uruchomić teraz ten skrypt? tak by działał w tle lub po recznym uruchomieniu gdy bede potrzebował?

2

Stwórz plik wsadowy (*.bat) o poniższej treści w lokalizacji, którą chcesz monitorować.
Pod Windowsem powinno się bez problemu odpalić.

@ECHO OFF
SET LookForFile= "Data.txt"

:CheckForFile
IF EXIST %LookForFile% GOTO FileExists

TIMEOUT /T 1 >nul

GOTO CheckForFile

:FileExists
COPY NUL Lock.txt
0

super, o to chodziło proste i skuteczne.
To może jeszcze rozszerzymy:
by plik Lock.txt zapisywał sie w konkretnym katalogu np. C:/ABC

0

To może sobie rozszerzysz? Zmiana nazwy pliku w tym gotowcu raczej nie jest trudna.

0

Oprócz zapisania w konkretnym katalogu na dysku musiałby pracować i czytać "miejsce" cały czas by automatycznie tworzyć plik Lock.txt zawsze gdy tylko się pojawi Data.txt. Aktualnie plik.bat musi być uruchamiany za każdym razem i działa jednorazowo.

0

Nie no, może nie przesadzajmy z tym trzymaniem za rączkę… Napisz całą specyfikację i podaj budżet, albo wprowadzaj sobie te zmiany samemu.

0

poprawek nie będzie :)
to wszystko co potrzebuje i wielkie dzięki za pomoc, dla was to nie problem napisać kilka linijek, zwłaszcza że to program na poziomie raczkujących w programowaniu? dla mnie to zgłębianie tematu od podstaw...

0

Wiem że musiałeś poświecić sporo czasu by nauczyć się tego i nie chodzi mi o to by dla kogoś robić za free ale nie za wszystko trzeba brać pieniądze. A swoją droga na ile byś wycenił swoją pracę przy tak skomplikowanym projekcie?

0

No to może inaczej. Skoro jesteście na tym forum to po co? by szukać pracy?
Więc może jakoś mnie naprowadzicie i podsunięcie rozwiązanie bezpłatnie? może się czegoś dzięki wam nauczę?
Mając ten kod podany przez "wisensane", czy wystarczyło by jakoś zapętlić by działał cały czas i spełniał moje założenia?

0

Na forum ludzie pomagaja osobom ktore faktycznie potrzebuja pomocy przy programowaniu, a nie oczekuja gotowcow

0

Więc może jakoś mnie naprowadzicie i podsunięcie rozwiązanie bezpłatnie? może się czegoś dzięki wam nauczę?

Jasne. Rozwiązaniem dla Twojego pierwotnego problemu jest na przykład następujący (mój) skrypt: Automatyczne tworzenie pliku tekstowego
Naprowadzam całkiem za darmo. Wyręczam za pieniądze. Ot, taki dziwny jestem.

Od wisensane dostałeś inny, w innym języku. Działa on tak, że po znalezieniu pliku Data.txt tworzy Lock.txt i kończy, a jak nie znajdzie to czeka sekundę i powtarza szukanie. Chcesz zmienić go tak, żeby po nie znalezieniu kasował Lock.txt i też powtarzał.

0

Skrypt działa poprawnie.
Ale musi działać cały czas, więc:
Gdy widzi plik Data.txt - tworzy plik Lock.txt.
Nie musi kasować ponieważ robi to inny program, który czyta rezultat z plików Data i Lock.
Więc gdy "inny program" skasuje oba pliki (po ich odczytaniu), skrypt ma oczekiwać na kolejny plik Data i robić to samo w kółko.

0

Mhm. Czyli po etykiecie :FileExists chcesz dodać oczekiwanie przez sekundę i skok do :CheckForFile.

0

tak, tą sama operację musiałby wykonywać cały czas, nie zamykając procesu do momentu ewentualnego zamknięcia programu. Plik Data.txt jest generowany recznie po przycisku wiec programu musi tylko czekać na ten plik (zawsze z ta samą nazwą Data.txt)

0

No, to już wiesz co zrobić. Pozostaje Ci albo znaleźć w tamtym kodzie, albo wyguglać, jak się w plikach bat robi skok, a jak oczekiwanie.

0

dzieki. dodałem na końcu kodu:
TIMEOUT /T 10 >nul
GOTO CheckForFile

2

dodałem jeszcze
move Data.txt c:\DMO
move Lock.txt c:\DMO
skad bedą odczytywane oba pliki po czym kasowane
Jeszcze raz dzięki, nawet sie czegoś nauczyłem.
Pozdrawiam wszystkich

1 użytkowników online, w tym zalogowanych: 0, gości: 1