Skocz do zawartości
  • 👋 Witaj na MPCForum!

    Przeglądasz forum jako gość, co oznacza, że wiele świetnych funkcji jest jeszcze przed Tobą! 😎

    • Pełny dostęp do działów i ukrytych treści
    • Możliwość pisania i odpowiadania w tematach
    • System prywatnych wiadomości
    • Zbieranie reputacji i rozwijanie swojego profilu
    • Członkostwo w jednej z największych społeczności graczy

    👉 Dołączenie zajmie Ci mniej niż minutę – a zyskasz znacznie więcej!

    Zarejestruj się teraz

Batch pare pytań


Rekomendowane odpowiedzi

Opublikowano

Witam,

Bawię sie trochę językiem Batch i potrzebuje pomocy, zrobiłem takie coś:
 

@echo off
title Test
echo. Twozenie plikow w folderach
md Dane
cd Dane
echo > Plik1.dll
echo > Plik2.dll
md Obrazy
cd Obrazy
echo > obraz1.png
echo > obraz2.jpg
pause >nul

Jak to uruchomię to sie tworzą takie pliki:

 

Folder > Dane > Plik1.dll, Plik2.dll, Obrazy> obraz1.png, obraz2.png

a ja chce aby było tak:

Folder > Dane > Plik1.dll, Plik2.dll

         > Obrazy >obraz1.png, obraz2.png

 

Jak to zrobić? Jak zrobię tak:

...
md Dane
md Obrazy
cd Dane
echo > plik1.dll
echo > Plik2.dll
# tu by sie przydała komenda na porut do folderu wczesniej
cd Obrazy (nie dziala bo dalej jest w folderze "Dane" w ktorym niema folderu "obrazy" ktory jest wczesniej)
echo > obraz1.png
echo > obraz2.jpg
...

to tworzą sie oba foldery ale jak wejdę do "dane" (cd dane) to już nie moge "wyjść" z niego i wejść do "Obrazy"

 

Mam nadzieje że ktoś zrozumie o co mi chodzi.

60vprg.png

Opublikowano

Fajnie działa, tylko że w [ścieżka do programu] nie mogą być polskie znaki ani spacje... ale to przetrwam, gorzej co jeżeli komuś wyśle a ta osoba będzie miała gdzie indziej ten plik? jest coś zastępczego zamiast "C:\Users\Krzysztof\Desktop\folder"?

60vprg.png

Opublikowano

Możesz odpalić CMD i wpisać cd /?. Pojawi ci się informacja o tej komendzie:

 

Displays the name of or changes the current directory.

Nigdzie nie jest napisane, że służy ona do "wejścia w folder". 

 

Wpisując dwie kropki "cofasz się o jeden folder". Podobnie, możesz wpisać:

 

cd ..\..\..\..

Co przeniesie cię o 4 foldery w górę.

ㅈㅈ.

Opublikowano

Fajnie działa, tylko że w [ścieżka do programu] nie mogą być polskie znaki ani spacje... ale to przetrwam, gorzej co jeżeli komuś wyśle a ta osoba będzie miała gdzie indziej ten plik? jest coś zastępczego zamiast "C:\Users\Krzysztof\Desktop\folder"?

 

Pewnie, że jest:

 

%CD%

W tej zmiennej znajduje się lokalizacja twojego skryptu. 

ㅈㅈ.

Opublikowano

Mam kolejne pytanie:

Jest skrypt który sam odnajdzie w komputerze dany folder z programem? np. WoT'a? bo jak wiemy każdy może mieć go zainstalowanego gdzie indziej.

60vprg.png

Opublikowano

Możesz to wyciągnąć z rejestru systemowego. 

Jeżeli WoT został poprawnie zainstalowany, to w rejestrze został dodany wpis dla narzędzia "dodaj/usuń programy" z informacją o tym, gdzie WoT się znajduje. 

Konkretniej, te wpisy znajdują się w:

HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall

Można w batchu wyciągnąć wpis, o który nam chodzi (czyli lokalizację WoT). Nie wiem, jak wyglądają wpisy w rejestrze w WoT (ty możesz, tfu, musisz to sprawdzić), dlatego w moim przykładzie wezmę na cel program CCleaner. 

@echo off
 
for /f "tokens=2*" %%A IN ('reg query "HKLM\SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\CCleaner" /v "InstallLocation"') DO (set pLoc=%%
echo %pLoc%
 
pause>nul

Kod wyświetli na ekranie lokalizację programu CCleaner (ta znajduje się w zmiennej pLoc). 

 

Możesz też zwyczajnie wyszukać plik, którym odpala się WoTa i przepisać jego lokalizację do jakiejś zmiennej. Problem pojawi się, kiedy użytkownik będzie miał na dysku dwa pliki o tej samej nazwie. :)

...lub zwyczajnie zapytać użytkownika o lokalizację WoT. Najbezpieczniejsza metoda.

ㅈㅈ.

Zarchiwizowany

Ten temat przebywa obecnie w archiwum. Dodawanie nowych odpowiedzi zostało zablokowane.

×
×
  • Dodaj nową pozycję...