Opgelost Bestanden kopieeren naar map van de Samsung S23 Ultra

Dit topic is als opgelost gemarkeerd
Toch nog 1 vraag. Is het mogelijk om de complete map op de S23 te verwijderen, opnieuw aan te maken en daarna files er naar toe kopieeren? Ik vraag dit omdat bv:
Op de PC zet ik in de map met MP3's 4 nieuwe titels, 2 titels worden aangepast en er worden er 8 verwijderd.
Met de code zoals die nu is zullen de nieuwe en gewijzigde worden gekopieerd maar op de S23 blijven dan de 8 die zijn verwijderd, staan.

Ik ga dadelijk eerst zo'n 100km fietsen dus ik ben er niet direct met een reactie.
 
Ik heb deze vraag ook aan Claude gesteld, wat nog veel meer tips en tricks opleverde. Helaas kon ik dit niet in het bericht verwerken, omdat HelpMij een foutmelding gaf van “Oeps, meer als 1000 tekens gebruikt”.
Daarom heb ik alles in een Word-document gezet.
En het werd nog gekker toen Claude ook met de suggestie kwam:
Wil je nog een stap verder en een echt pop-upvenster met een voortgangsbalk (percentage en bestandsnaam) in plaats van alleen de statusbalk?
Dat kan via een UserForm in VBA dan zie je echt een apart venster verschijnen tijdens het kopiëren.


Deze is nog niet opgenomen in het Word-document. Ik denk dat je na de fietstocht je handen al vol hebt aan het document. Dus als je interesse hebt, laat het maar even weten.
Succes!!
 

Bijlagen

Dank je Peter, ik zal dit Word document eens goed bestuderen. Die statusbalk mag je, als je wilt, ook wel doorsturen. Altijd leuk om mee te spelen en zoeken waar toe te passen.
Dank voor al jouw gedane moeite, wordt gewaardeerd.
 
Als bijlage vind je "Deel 2" van het Word-document, met daarin nog enkele tips en tricks.
Lees deze ook eens door, want voor mij is het allemaal abracadabra.
Mijn aanname is dat je je aankomend weekend niet hoeft te vervelen.
Succes, en laat gerust weten of alles naar behoren functioneert.
Anders vragen we het gewoon weer aan Claude.
 

Bijlagen

Hoi Petr, Top man dat je wilt helpen.
Ik heb eerst de code uit jouw allereerste reactie genomen om te controleren of de GSM wel beschikbaar is, en dat is ie. In devices.txt staat een device.

Achter die code staat de code uit het eerste Word-document en loop direct al tegen een probleem waar ik niet uitkom.
De variablele uit jouw code is: sGSMMap = "/sdcard/Music/" (S23 heeft geen sdcard)
Bij mij is dat sGSMMap = "/Music/Samsung/MP3-Fitness/", dit heb ik uit een door de S23 aangemaakte playlist gehaald maar dit wordt niet herkent. In gsm_lijst.txt staat:
'C:\CopyNaarGsmMetVBA\adb.exe" shell ls "/Music/Samsung/MP3-Fitness/' is not recognized as an internal or external command, operable program or batch file.

Bovenste stukje van mijn playlist welke in kladblok werd geopend is:
#EXTM3U
#EXTINF:201,<unknown> - 002-345-709 - Trinity ('76)
Music/Samsung/MP3-Fitness/002-345-709 - Trinity ('76).mp3
#EXTINF:156,<unknown> - 0800 Heaven - Nathan Dawe & Joel Corry & Ella Henderson (2023)
Music/Samsung/MP3-Fitness/0800 Heaven - Nathan Dawe & Joel Corry & Ella Henderson (2023).mp3

Nu weet ik niet meer wat ik gisteren bij sGSMMap had opgegeven, toen schreef die wel weg.
Ik heb al van alles geprobeerd maar nada.
 
Laatst bewerkt:
Hier is onze Claude weer.

Ik zie het probleem! Er zijn twee dingen:
Probleem 1: Het pad in de playlist De playlist toont Music/Samsung/MP3-Fitness/ dat is een relatief pad.
Het echte volledige Android-pad is:
/sdcard/Music/Samsung/MP3-Fitness/<br>
of
/storage/emulated/0/Music/Samsung/MP3-Fitness/<br>
Op Samsung zonder SD-kaart is /sdcard/ gewoon een alias voor de interne opslag.

Probleem 2: De aanhalingstekens in het Shell-commandoIn gsm_lijst.txt zie je:
'C:\CopyNaarGsmMetVBA\adb.exe" shell ls "/Music/Samsung/MP3-Fitness/'<br>
Er zit een mix van enkele en dubbele aanhalingstekens, dat klopt niet.

Laten we eerst het juiste pad opzoeken via CMD:
Open CMD en typ deze drie commando's één voor één:
C:\CopyNaarGsmMetVBA\adb.exe shell ls /sdcard/<br>
C:\CopyNaarGsmMetVBA\adb.exe shell ls /sdcard/Music/<br>
C:\CopyNaarGsmMetVBA\adb.exe shell ls /sdcard/Music/Samsung/<br>
Wat zie je na elk commando? Dan weten we het exacte pad en kunnen we de code aanpassen.
 
Dank je man!

Eerste commando:
Alarms
Android
Audiobooks
DCIM
Documents
Download
GPX bestanden
Movies
Music
Notifications
Pictures

tweede:
Samsung

derde:
1, 2, 3 - Catherine Ferry ('76).mp3
MP3-Fitness
 
Claude antwoorde met:

Het juiste pad is dus:
/sdcard/Music/Samsung/MP3-Fitness/<br>

Maar het probleem zat in de aanhalingstekens in de VBA code. Pas deze regel aan:
Van:
sGSMMap = "/Music/Samsung/MP3-Fitness/"<br>
Naar:
sGSMMap = "/sdcard/Music/Samsung/MP3-Fitness/"<br>
En de shell ls regel in de code moet zo zijn zonder extra aanhalingstekens rond het pad:
sCmd = Chr(34) &amp; sADB &amp; Chr(34) &amp; " shell ls " &amp; sGSMMap<br>Shell "cmd /c " &amp; sCmd &amp; " &gt; C:\CopyNaarGsmMetVBA\gsm_lijst.txt 2&gt;&amp;1", vbHide<br>

Test eerst manueel in CMD:
C:\CopyNaarGsmMetVBA\adb.exe shell ls /sdcard/Music/Samsung/MP3-Fitness/<br>

Zie je daar je MP3's staan?
Dan weten we dat het pad 100% klopt en passen we de volledige macro aan.
 
Dat is het belangrijkste probleem opgelost! Nu weten we:
  • ✅ ADB werkt
  • ✅ GSM wordt herkend
  • ✅ Pad is correct: /sdcard/Music/Samsung/MP3-Fitness/
Pas nu in de volledige macro enkel deze instelling aan:

' === VASTE INSTELLINGEN ===<br>sADB = "C:\CopyNaarGsmMetVBA\adb.exe"<br>sMapMP3s = "C:\MijnMuziek\" ' Jouw map met MP3's op PC<br>sGSMMap = "/sdcard/Music/Samsung/MP3-Fitness/" ' Correct pad op S23<br>sLogBestand = "C:\CopyNaarGsmMetVBA\sync_log.txt"<br>' ==========================<br>

En deze regel in de code waar ls wordt aangeroepen:
Van:
sCmd = Chr(34) &amp; sADB &amp; Chr(34) &amp; " shell ls " &amp; Chr(34) &amp; sGSMMap &amp; Chr(34)<br>

Naar:
sCmd = Chr(34) &amp; sADB &amp; Chr(34) &amp; " shell ls " &amp; sGSMMap<br>

Alle andere code blijft exact hetzelfde. Wil je nu de volledige definitieve macro nog één keer netjes op een rij zodat je een clean versie hebt om mee te werken?
 
Die &amp; en <br> horen niet in VBA of een Shell opdracht thuis.
&amp; moet zijn: &
<br> = Line break in HTML (kan er uit of waar nodig vervangen door vbCrLF)
Chr(34) = een dubbele quote, deze dus: "
 
Laatst bewerkt:
De code runt wel en in Sync_log komen steeds meer titels te staan echter, er worden geen bestanden naar /sdcard/Music/Samsung/MP3-Fitness/ weggeschreven

GEKOPIEERD: Are you growing tired of my love - Status Quo ('69).mp3
GEKOPIEERD: Are you lonely for me baby - Carla Thomas & Otis Redding ('67).mp3
GEKOPIEERD: Are you lonesome tonight - Elvis ('60).mp3
GEKOPIEERD: Are you ready - Pacific Gas & Electric ('70).mp3

Deze bestanden staan NIET op de GSM

Ik zag nu in het eerste Word-document een command om de hele map in 1x te kopieeren van A naar S23

dat zou veel sneller gaan en als dat zo is, dan ga je ook op zeker.
 
@edmoor
Je hebt helemaal gelijk. Ik had deze codes snel gekopieerd en geplakt.
Dit zijn de codes die Claud mij gaf.
Nu zie je dus ook hoeveel verstand ik heb van VBA en dergelijke. Helemaal niets.

Code:
Pas nu in de volledige macro enkel deze instelling aan:

' === VASTE INSTELLINGEN ===
sADB        = "C:\CopyNaarGsmMetVBA\adb.exe"
sMapMP3s    = "C:\MijnMuziek\"                        ' Jouw map met MP3's op PC
sGSMMap     = "/sdcard/Music/Samsung/MP3-Fitness/"    ' Correct pad op S23
sLogBestand = "C:\CopyNaarGsmMetVBA\sync_log.txt"
' ==========================

En deze regel in de code waar ls wordt aangeroepen:
Van:

sCmd = Chr(34) & sADB & Chr(34) & " shell ls " & Chr(34) & sGSMMap & Chr(34)

Naar :

sCmd = Chr(34) & sADB & Chr(34) & " shell ls " & sGSMMap
 
Laatst bewerkt:
Hehe, eindelijk gevonden.

Code:
For Each oFile In oFolder.Files                                                                                      
      If LCase(oFSO.GetExtensionName(oFile.Path)) = "mp3" Then
         If oFile.DateLastModified >= dGrens Then
            sCmd = """" & sADB & """ push """ & oFile.Path & """ """ & sGSMMap & """"
            Shell sCmd, vbNormalFocus
            
            Print #iLog, "GEKOPIEERD: " & oFile.Name & " naar " & sGSMMap
            nGekopieerd = nGekopieerd + 1
            Application.Wait Now() + TimeValue("00:00:01")
         End If
      End If
   Next oFile
 
Waarom niet de sd-kaart uit je telefoon in de computer geplaatst en dan eenvoudig een backup programma laten lopen (bijv. allsync) laten lopen, sd-kaart terugplaatsen & klaar ?
 
Omdat een Samsung S23 Ultra geen SD-kaart mogelijkheid heeft.
Het werkt als een tierelier, op de PC verwijderde files worden ook op de GSM verwijderd en alle nieuwe en/of gewijzigde bestanden op de PC worden naar de GSM weggeschreven, eventueel overschreven.
Nadien zal de map op de GSM exact hetzelfde zijn als die op de PC zonder meer te kopieeren dan nodig is.
 
Er is weer een wereld voor me opengegaan met dat ADB. Ik heb het nu voor elkaar dat in enkele seconden van beide mappen het bestand bekend is, met de meestrecente datum waarop dat bestand werd gewijzigd. Zijn die gelijk dan zijn de bestanden op de S23 up-to-date, en in het andere geval weten we ook hoeveel dagen we moeten syncen. Leuk speelgoed!
Moet wel zeggen dat er toch enkele kleine foutjes in de code zaten. Zo heeft ADB bv moeite met bestandnamen waarin een ' zit, wat bij mij zo was. bv Test mp3 van die zanger ('67).mp3 werkte niet.
Die spaties is geen probleem maar die ' net voor 67 wel dus heb ik alle mp3's gerenamed en de (' vervangen door (19 en daarna werkte het wel. Dit voor diegene die met de code in dit topic aan de gang gaan.
 
Terug
Bovenaan Onderaan