Hejto.pl
Dodaj post

Wpisz coś do wyszukania (minimum 2 znaki)

majlu11Debiutant

Dołączył/a:

  • 2 wpisów
  • 11 komentarzy
  • 1 obserwujących

Debiutant

w Hydepark

3piorunów

Witam

Jakiś czas tem prosiłem was o pomoc w doborze programu do importowania zdjęć. Udało mi sie napisać skryp w poweshell który spełnia wszystkie moje oczekiwania. Ale mam problem z jego uruchamianiem. Chciałbym aby startował on jak uruchomienie normalnego pliku. zrobiłem wg instrukcji
Utworz skrot,
W skrocie --> Wlasciwosci
i w elemencie docelowym dopisac przed sciezka: powershell.exe -ExecutionPolicy Bypass -File .........

i czarne okno pojawia sie na 1s i tyle
Z pozycji powershella skrypt sie uruchamia

Oto skrypt:

# Ustawienia
$destinationPath = "C:\\Zdjecia" # Zmień na odpowiednią ścieżkę docelową

# Funkcja do znalezienia karty SD
function Get-SDCardPath {
   $drives = Get-PSDrive -PSProvider FileSystem
   foreach ($drive in $drives) {
       $dcimPath = Join-Path -Path $drive.Root -ChildPath "DCIM"
       if (Test-Path $dcimPath) {
           return $drive.Root
       }
   }
   return $null
}

# Funkcja do importowania zdjęć
function Import-Photos {
   param (
       [string]$source,
       [string]$destination
   )

# Sprawdzenie, czy źródło istnieje
   if (-Not (Test-Path $source)) {
       Write-Host "Źródło nie istnieje: $source"
       return
   }

# Pobranie zdjęć
   $photos = Get-ChildItem -Path $source -Include .jpg, .jpeg, *.png -Recurse

if ($photos.Count -eq 0) {
       Write-Host "Brak zdjęć do zaimportowania."
       return
   }

# Wyświetlenie zdjęć do zaimportowania
   Write-Host "Zdjęcia do zaimportowania:"
   $photos | ForEach-Object { Write-Host $_.FullName }

# Zapytanie użytkownika
 # $userResponse = Read-Host "Czy chcesz zaimportować te zdjęcia? (T/N)"
 # if ($userResponse -ne 'T') {
   #   Write-Host "Importowanie anulowane."
     # return
 # }

# Importowanie zdjęć
   foreach ($photo in $photos) {
       $dateTaken = (Get-Date $photo.LastWriteTime).ToString("yyyy-MM-dd")
       $folderPath = Join-Path -Path $destination -ChildPath $dateTaken

# Utworzenie folderu, jeśli nie istnieje
       if (-Not (Test-Path $folderPath)) {
           New-Item -ItemType Directory -Path $folderPath | Out-Null
       }

# Generowanie unikalnej nazwy pliku
       $newFileName = [System.IO.Path]::GetFileNameWithoutExtension($photo.FullName) + "_" + [guid]::NewGuid().ToString() + [System.IO.Path]::GetExtension($photo.FullName)
       $newFilePath = Join-Path -Path $folderPath -ChildPath $newFileName

# Kopiowanie pliku
       Copy-Item -Path $photo.FullName -Destination $newFilePath
       Write-Host "Skopiowano: $newFilePath"
   }

Write-Host "Importowanie zakończone."
}

# Znalezienie karty SD
$sdCardPath = Get-SDCardPath

if ($sdCardPath) {
   Write-Host "Znaleziono kartę SD w: $sdCardPath"
   Import-Photos -source (Join-Path -Path $sdCardPath -ChildPath "DCIM") -destination $destinationPath
} else {
   Write-Host "Nie znaleziono karty SD."
}

Start-Process explorer.exe $destinationFolder

Fanatyk2piorunów

@majlu11 - próbowałeś tak:
>powershell.exe -command "& 'C:\\A path with spaces\\MyScript.ps1' -ExecutionPolicy Bypass"

Fanatyk1piorunów

@majlu11 - to utwórz plik .bat z poniższą zawartością w tym samym folderze gdzie Twój skrypt PowerShella - i uruchom ten plik BAT dwuklikiem:
>powershell -ExecutionPolicy Bypass -File .\\MyPowershellScript.ps1
albo
>start powershell -command "& '.\\MyPowershellScript.ps1' -ExecutionPolicy Bypass"

Debiutant0piorunów

@koszotorobur tak tez próbowałem i nic. Juz mi brakuje pomysłów.

GURU0piorunów

@majlu11 zapisz plik w jakimś folderze, naciśnij prawym przyciskiem na folderze, otwórz tu terminal, włącz skrypt z terminala i powiedz jaki bład jest napisany

Debiutant1piorunów

@entropy_ z terminala działa mi normalnie

GURU0piorunów

@majlu11 nie rozumiem, destination i source masz zawsze rózne czy takie same?
Bo jak takie same to włączaj skrypt a nie skrót

GURU0piorunów

@majlu11 prawym i run batch script

Debiutant1piorunów

@entropy_ ja jestem laikiem, chciałem napisać skrypt który wykryje kartę SD (o różnej nazwie) i zaimportuje z niej zdjęcia tworząc folder z datą wykonania zdjęcia we wskazanym miejscu. I tak mi to działa, ale chciałbym uruchamiać ten skrypt podwójnym kliknięciem żeby był dostępny dla każdego w firmie kto będzie z niego korzystał.

GURU1piorunów

@majlu11 skoro działa z terminala to spróbuj tak:
Zostaw ten skrypt gdzieś, pociągnij go prawym przyciskiem myszki na pulpit, wybierz utwórz tutaj skrót.
naciśnij prawym, właściwości i dopisz na początku
powershell

Pokaż więcej komentarzy (14)

Debiutant

w Programowanie

6piorunów

Witam
Mam problem z importowaniem zdjęć na komputer z aparatów. Ale od początku.
Pracuje w firmie gdzie do dokumentacji robimy kilka zdjęć aparatem(każdy ma swój) i później zgrywamy to na komputer szefa.
Starsze aparaty były wykrywane przez Windowsa jako aparat i poprostu klikało się prawym przyciskiem myszy na nazwę aparatu w eksploratorze plików i pojawiało się importuj. I komputer sam tworzył podfolderze z datą. Działało to dobrze. Odkąd pojawiły się nowe aparaty w firmie zaczął się problem. Po podpięciu do komputera nie wykrywa ich jako aparat tylko pamięć masową. I można importować jedynie przez aplikację zdjęcia co średnio działa… albo poprostu tworzyć folder z aktualną data i kopiować. Tu jest drugi problem bo aparaty dublują nazwy i już się zdążyło ze ktoś zastąpił zdjęcia o takiej samej nazwie…
Znacie jakiś prosty program który importowałby zdjęcia z karty SD tworząc od razu podfolder z datą?
Jeżeli to nie ten dział to przepraszam.

Debiutant1piorunów

ChatGPT zaproponował taki skrypt, jak będę miał dostęp do apartow to go przetestuję.
Myślicie że wszystko jest tutaj ok czy coś wymaga poprawy?
Jeszcze raz dziękuję za zainstalowanie 😉
# Ustawienia
$destinationPath = "C:\\Users\\TwojaNazwaUżytkownika\\Pictures\\ImportowaneZdjęcia" # Ścieżka docelowa

# Znajdź dysk z kartą SD
$sdCard = Get-WmiObject Win32DiskDrive | Where-Object { $.MediaType -eq "Removable Media" }

if ($sdCard) {
# Uzyskaj literę dysku
$sdCardLetter = (Get-WmiObject Win32LogicalDisk | Where-Object { $.DeviceID -eq $sdCard.DeviceID }).DeviceID

# Pobierz wszystkie pliki zdjęć z karty SD
$images = Get-ChildItem -Path "$sdCardLetter\\" -Include .jpg, .jpeg, .png -Recurse

foreach ($image in $images) {
# Odczytaj datę utworzenia zdjęcia
$creationDate = (Get-Item $image.FullName).CreationTime

# Ustal nazwę folderu na podstawie daty
$dateFolder = $creationDate.ToString("yyyy-MM-dd")
$finalDestinationPath = Join-Path -Path $destinationPath -ChildPath $dateFolder

# Utwórz folder docelowy, jeśli nie istnieje
if (-not (Test-Path -Path $finalDestinationPath)) {
New-Item -ItemType Directory -Path $finalDestinationPath
}

# Ustal nową nazwę pliku, aby uniknąć nadpisywania
$newFileName = "{0}_{1:yyyy-MM-dd_HH-mm-ss}{2}" -f $image.BaseName, $creationDate, $image.Extension
$newFilePath = Join-Path -Path $finalDestinationPath -ChildPath $newFileName

# Skopiuj zdjęcie do odpowiedniego folderu z nową nazwą
Copy-Item -Path $image.FullName -Destination $newFilePath -Force
}

Write-Host "Zdjęcia zostały zaimportowane do: $destinationPath"
} else {
Write-Host "Nie znaleziono karty SD."
}

Fanatyk1piorunów

@majlu11 - jak nie przetestujesz to się nie dowiesz :stuck_out_tongue_winking_eye:

Pokaż więcej komentarzy (17)

Tytan

w Gównowpis

495piorunów

Od kilku miesięcy wchodziłem sobie na hejto tylko i wyłącznie po to żeby zobaczyć co ciekawego napisał Aryo, żeby było szybciej zawsze w google wbijałem "hejto aryo", po czy stwierdzałem że nic innego tu nie ma i przechodziłem na wypok. Od jakiegoś czasu aryo pisał coraz mniej więc za każdym następnym razem kiedy się orientowałem że nie ma nic od niego tak trochę od niechcenia sprawdzałem co piszą inni i coś tam kilka razy znalazłem. Od jakiegoś miesiąca Aryo praktycznie przestał dodawać nowe treści o  więc znowu przestałem tu zaglądać aż tu nagle jeb wypok się skończył i hejto praktycznie z dnia na dzień stało się dla mnie pełnowartościowym serwisem zastępującym wypok we wszystkim do czego mi był potrzebny, a nawet powoli zaczynam stwierdzać że dużo bardziej mi się tutaj podoba. Kilka razy wczoraj i dzisiaj zacząłem wpisywać w przeglądarce wyk... po czym albo od razu się zorientowałem i zmieniłem na hejto albo z przyzwyczajenia wchodziłem tam po czym widząc to powoli wczytujące się gówno od razu zamykałem okno i wracałem tutaj.

Piorun jeśli miałeś/aś tak samo jak ja.

  

Wirtuoz3piorunów

@atos Zły brat bliźniak Michała Bialkova xD

Tytan3piorunów

@mati3654 Miałam podobnie minus aryo. Pierwsze co zrobiłam, to zablokowałam tagi wojenne, ponieważ świat podąża za naszą uwagą i interesując się złymi rzeczami, wzmacniamy je w naszej rzeczywistości. Myślałam dobrze o hejto i jego rozwoju, ale jako o serwisie, gdzie ludzie pokazują fajne, pozytywne rzeczy. Swoją twórczość, swoje apki, gry planszowe, hobby, dzielą się swoimi radościami. A nie tylko sianie nienawiści. Staram się choć raz dziennie dać pozytywny wpis.

Pokaż więcej komentarzy (18)