Toon posts:

[XP] Inhoud 3 mappen vergelijken / renamen

Pagina: 1
Acties:

Verwijderd

Topicstarter
Hey

Ik heb het volgende probleem:
Ik heb 3 directories (voor het gemak a, b en c), met daarin ieder 200 bestanden. In map a zijn alle bestanden alleen genummerd: 0001, 0002 tot aan 0200, met als extensie .txt.
In map b staan ook 200 bestanden, die bij de vorige 200 horen. Ook deze hebben een naamgeving beginnend met het nummer, 0001 tot 0200, echter staat er nu een korte toelichting achter het bestand (0001 - Toelichting.jpg). De extensie van al deze bestanden is .jpg.
En dan de 3e map - Deze is in principe gelijk aan map a, echter weer een andere extensie.

Mijn vraag is nu, hoe ik het makkelijkst de namen van de bestanden in mappen a en c kan renamen, zodat deze dezelfde naam hebben als de bestanden in map b.

In DOS heb ik geprobeerd om met "dir *.* > inhoud.txt" wat te proberen, echter weet ik niet hoe ik daar verder kom (in principe heb ik wel een tekstbestand met op iedere regel dus de naam van een bestand, nog steeds op dezelfde volgorde als in de andere directories).
Ik heb gegoogled, en gesearched op GoT, echter krijg ik alleen info over het synchroniseren van mappen met servers en andere apparaten.

  • passer
  • Registratie: November 2002
  • Laatst online: 18:28
Er zullen wel verschillende progjes zijn om een serie bestanden te renamen, maar ik gebruik pr2kv13.exe (=Powerren 2000) - kwam van http://(www.)download.com maar blijkbaar hebben die 't niet meer.

Effe Googelen op Powerren en download en je vindt een aantal links.

(handig progje)

Verwijderd

Topicstarter
Ik zie in dat progje geen optie om de files in dir 1 de naam te geven die gelijk is aan de bestanden aan dir 2, helaas...

  • dawuss
  • Registratie: Maart 2001
  • Laatst online: 01-02 20:46

dawuss

gadgeteer

Windows Commander kan uitstekend en heel uitgebreid synchroniseren (en kijk vooral naar de multi-rename tool), maar er zijn nog veel simpelere programma'tjes voor die wel gratis zijn. Een beetje Googlen zal je hier uitstekend bij helpen :)

Op de eerste pagina zoekresultaten vond ik al twee freeware progjes voor je:

Easy2Sync
TCSync.

Succes :)

[ Voor 18% gewijzigd door dawuss op 12-04-2003 20:14 . Reden: layout verbeterd ]

micheljansen.org
Fulltime Verslaafde Commandline Fetisjist ©


Verwijderd

Topicstarter
dawuss schreef op 12 April 2003 @ 20:10:
Windows Commander kan uitstekend en heel uitgebreid synchroniseren (en kijk vooral naar de multi-rename tool), maar er zijn nog veel simpelere programma'tjes voor die wel gratis zijn. Een beetje Googlen zal je hier uitstekend bij helpen :)

Op de eerste pagina zoekresultaten vond ik al twee freeware progjes voor je:

Easy2Sync
TCSync.

Succes :)
Easy2Sync kan alleen synchroniseren, en dat wil ik dus niet. Ik wil alléén de bestandsnamen synchroniseren, de extensies zijn ongelijk, de inhoud is ongelijk (en dat wilde ik graag zo houden ;) ), maar voor de rest wil ik ze identiek maken.

Ff TCSync proberen :)

[edit]
Ook TCSync is niet wat ik zoek; deze tool is gericht op het synchroniseren van PocketPC <-> gewone PC.
Toch bedankt :)

[ Voor 8% gewijzigd door Verwijderd op 12-04-2003 20:29 ]


  • Belg
  • Registratie: Januari 2002
  • Laatst online: 01-09 14:30
Probeer het eens met een batch-file (de meest miskende manier om iets in windows te doen). Gewoon knippen en plakken in een .txt file en deze renamen naar .bat. De batch file moet wel uitgevoerd worden in de map boven de map a\ b\ en c\ (of hoe ze dan ook heten). Het ding verdient geen schoonheidsprijs, maar hopelijk heb je er wel wat aan.
Onderstaande batchfile werkt trouwens alleen op een windows 2000/XP systeem vanwege de %%~Xa in de FOR commando's. Als het niet werkt, hoor ik het wel.

@echo off
dir /b b\*.jpg >list.txt
for %%a in (a\*.*) do call :dinges "%%a"
echo.
for %%a in (c\*.*) do call :dinges "%%a"
del list.txt >>nul
goto :eof

:dinges
for /f "tokens=1 delims=" %%a in ('echo %1') do set drive=%%~fa
for /f "tokens=1 delims=:" %%a in ('echo %drive%') do set drive=%%a

for /f "tokens=1 delims=" %%a in ('echo %1') do set filepath=%%~pa
for /f "tokens=1 delims=" %%a in ('echo %1') do set filename=%%~na
for /f "tokens=1 delims=" %%a in ('echo %1') do set ext=%%~xa
for /f "skip=2 tokens=1 delims=" %%a in ('find "%filename%" list.txt') do set "fullname=%%~na"
for /f "tokens=2 delims=-" %%a in ('echo %fullname%') do set "omschrijving=%%a"

echo Renaming "%filename%%ext%" to "%filename% -%omschrijving%%ext%"
ren "%drive%:%filepath%%filename%%ext%" "%filename% -%omschrijving%%ext%"

EDIT: Je kunt om te testen het beste even de laatste regel weglaten.....

[ Voor 15% gewijzigd door Belg op 13-04-2003 03:49 ]


Verwijderd

Topicstarter
Belg schreef op 13 april 2003 @ 03:03:
Probeer het eens met een batch-file (de meest miskende manier om iets in windows te doen). Gewoon knippen en plakken in een .txt file en deze renamen naar .bat. De batch file moet wel uitgevoerd worden in de map boven de map a\ b\ en c\ (of hoe ze dan ook heten). Het ding verdient geen schoonheidsprijs, maar hopelijk heb je er wel wat aan.
Onderstaande batchfile werkt trouwens alleen op een windows 2000/XP systeem vanwege de %%~Xa in de FOR commando's. Als het niet werkt, hoor ik het wel.

*knip*

EDIT: Je kunt om te testen het beste even de laatste regel weglaten.....
Kijk, dit begint ergens op te lijken :)
Hij geeft alleen de error "Bestand niet gevonden", waarna hij zegt Renaming file 0001 to 0001 -.txt. De files blijven echter dezelfde naam houden?

  • Elephtera
  • Registratie: Juni 2001
  • Laatst online: 04-09 14:22
probeer eens een bat script die het volgende doet:

map a bestand xxx.* = map b bestand xxx*.*
dan map a bestand *.* = *.txt

zo'n zelfde iets doe je dan ook voor map c.

ik weet niet of j in batch een for i=1to200 loopje kunt maken. ik dacht het niet, dus je zou het anders even in C++ moeten maken. of andere programmeer taal.

misschien kan een andere tweaker t ff doen? ik wil t anders wel doen, maar duurt wel een dagje

“An elephant is a mouse with an operating system”


  • Belg
  • Registratie: Januari 2002
  • Laatst online: 01-09 14:30
Poging 2:

@echo off
for %%a in (c:\d\a\*.*) do call :dinges "%%a"
for %%a in (c:\d\c\*.*) do call :dinges "%%a"
goto :eof


:dinges
for /f "tokens=1 delims=" %%a in ('echo %1') do set drive=%%~fa
for /f "tokens=1 delims=:" %%a in ('echo %drive%') do set drive=%%a


for /f "tokens=1 delims=" %%a in ('echo %1') do set "filepath=%%~pa"
for /f "tokens=1 delims=" %%a in ('echo %1') do set "filename=%%~na"
for /f "tokens=1 delims=" %%a in ('echo %1') do set "ext=%%~xa"
for /f "tokens=1 delims=" %%a in ('dir /b "c:\d\b\*%filename%*.*" ') do set "fullname=%%~na"
for /f "tokens=2 delims=-" %%a in ('echo %fullname%') do set "omschrijving=%%a"

echo Renaming "%filename%%ext%" to "%filename% -%omschrijving%%ext%"
ren "%drive%:%filepath%%filename%%ext%" "%filename% -%omschrijving%%ext%"


Als het nog niet werkt, kun je misschien eens de "@echo off" weglaten en de batchfile op de volgende manier starten: BATCHFILE |more
Dan zie je waar hij de fout ingaat.
Kun je anders eens de volledige naam van 3 bestanden posten? ("c:\map\dinges\a\0010.txt" "c:\map\dinges\b\0010 - omschrijving.jpg" "c:\map\dinges\c\0010.ext").

Als reactie op Elephtera:
Je kunt in een batchfile een soort for i loopje bouwen, maar dan is het nog steeds even moeilijk om de bestandnamen in stukken te hakken.

@echo off
set counter=0
:loopje
if %counter% GTR 200 goto :eof
echo De counter is nu %counter%
set /a counter=%counter%+1
goto loopje

Het blijft "jaren 70" technologie.

  • passer
  • Registratie: November 2002
  • Laatst online: 18:28
Verwijderd schreef op 12 April 2003 @ 20:04:
Ik zie in dat progje geen optie om de files in dir 1 de naam te geven die gelijk is aan de bestanden aan dir 2, helaas...
Kan niet volgen: je selecteert je bestanden van map 2 en werkt met 'change prefix' en ook met 'use counter' - eventueel kan je ook werken met 'Remove' of 'Replace string' - of snap ik je niet goed?

Verwijderd

Als reactie op Elephtera:
Je kunt in een batchfile een soort for i loopje bouwen, maar dan is het nog steeds even moeilijk om de bestandnamen in stukken te hakken.

@echo off
set counter=0
:loopje
if %counter% GTR 200 goto :eof
echo De counter is nu %counter%
set /a counter=%counter%+1
goto loopje

Het blijft "jaren 70" technologie.
c++ notatie werkt ook :)

set count=0
:loop
echo %count%
set /a count+=1
if %count%==201 goto end
goto loop

:end
pause

[ Voor 3% gewijzigd door Verwijderd op 14-04-2003 12:05 ]


  • Belg
  • Registratie: Januari 2002
  • Laatst online: 01-09 14:30
Verwijderd schreef op 14 April 2003 @ 12:04:
[...]


c++ notatie werkt ook :)

set count=0
:loop
echo %count%
set /a count+=1
if %count%==201 goto end
goto loop

:end
pause
Gaaf.... Zo zie je maar weer dat je elke dag weer wat bijleerd in de IT.
Pagina: 1