[Win7] [Scripting] Controleren op extentie en verplaatsen

Pagina: 1
Acties:

Acties:
  • 0 Henk 'm!

  • Mmore
  • Registratie: Oktober 2006
  • Laatst online: 03-10 13:27
Beste Tweakers,

Ik heb wat hulp nodig :P Ik gebruik een tijd bittorrent sync en ben hier erg tevreden mee, maar het veroorzaakt wat conflicten met andere software. Ik wil daarom het volgende doen.

1) scan folder (c:/folder1/) and check for files with .!sync extention in either folder or subfolders.

2) if yes - do nothing (end script), if no then continue script.

3) move all files that do NOT have "sync" in their filename to another folder (c:/folder2/). End script.

Enig idee hoe ik dit kan realiseren? Wil het script automatisch ongeveer elke 15m uitvoeren op een Win7 computer. Het liefst zonder extra software te downloaden.

Als er terloops nog andere oplossingen zijn voor een BTSync "buffer folder" dan hoor ik dat natuurlijk ook graag :*)

Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 19:39
PowerShell is hier denk ik ideaal voor.

Denk dat je hier wel mee uit te voeten kan? http://stackoverflow.com/...hrough-files-in-directory

=edit=
Oh en automatisch iedere 15min uitvoeren zou ik gewoon doen met task scheduler van Windows zelf.

[ Voor 23% gewijzigd door Ramon op 19-06-2014 21:25 ]

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • JerX
  • Registratie: Mei 2006
  • Laatst online: 08-09 09:28

Steam: Jerx | PSN: Jerxy88 | Xbox: Jerxy


Acties:
  • 0 Henk 'm!

  • Mmore
  • Registratie: Oktober 2006
  • Laatst online: 03-10 13:27
Het verplaatsen van bestanden is voor mij inderdaad niet zo lastig middels robycopy, powerscript of andere oplossingen. Ik zit vooral met het checken op bestanden met de .!sync extentie en vervolgens het kopieren van alle bestanden met uitzondering van.. Het aan elkaar koppelen van het hele gebeuren in 1 script wilt vooralsnog niet :P

Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 19:39
Dan moet je gewoon even je powershell script hier plaatsen, dan kunnen we mee kijken.

Voor mijn begrip, wil je gewoon alle bestanden die niet eindigen op !sync kopiëren (heb je geen powershell voor nodig lijkt me?) of wil je pas kopiëren als er geen enkel bestand meer in de directory staat die eindigt op !sync?

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • Mmore
  • Registratie: Oktober 2006
  • Laatst online: 03-10 13:27
Ik wil dus;
1) pas kopiëren als er geen enkel bestand meer in de directory staat die eindigt op !sync
en daarbij
2) bestanden die voorts nog "sync" in hun naam hebben staat niet verplaatsen.

En dan niet kopieren maar gewoon verplaatsen (move). Ik zie dat PowerShell standaard niet geinstalleerd is dus ik ga me daar later vanavond in verdiepen mochten er geen andere suggesties zijn om dit te doen.

Acties:
  • 0 Henk 'm!

  • Ramon
  • Registratie: Juli 2000
  • Laatst online: 19:39
PowerShell is wel degelijk standaard geïnstalleerd op W7 :)

Check mijn V&A ads: https://tweakers.net/aanbod/user/9258/


Acties:
  • 0 Henk 'm!

  • The Eagle
  • Registratie: Januari 2002
  • Laatst online: 20:04

The Eagle

I wear my sunglasses at night

Onder batch shell kan zoiets ook :)
http://stackoverflow.com/...s-from-an-ms-dos-dir-list
Eerste voorbeeldje geeft al een aanzet voor een exclude.

Of alternatief een combi van dir en findstr:
http://stackoverflow.com/...that-excludes-a-file-type
Maar dan moet je met een tussenbestand gaan werken dat je iedere keer eerst wegmikt, das ook niet heel handig als het niet hieft :)

Al is het nieuws nog zo slecht, het wordt leuker als je het op zijn Brabants zegt :)


Acties:
  • 0 Henk 'm!

  • Question Mark
  • Registratie: Mei 2003
  • Laatst online: 16:06

Question Mark

Moderator SSC/WOS

F7 - Nee - Ja

Mmore schreef op donderdag 19 juni 2014 @ 21:34:
Ik zit vooral met het checken op bestanden met de .!sync extentie en vervolgens het kopieren van alle bestanden met uitzondering van..
Dat kan Robocopy toch gewoons standaard?

code:
1
robopy C:\folder1 c:\folder2 /MOV /XF *.!sync


Dit verplaatst alles van folder1 naar folder2 behalve alles met de extensie .!sync

MCSE NT4/2K/2K3, MCTS, MCITP, CCA, CCEA, CCEE, CCIA, CCNA, CCDA, CCNP, CCDP, VCP, CEH + zwemdiploma A & B


Acties:
  • 0 Henk 'm!

  • Mmore
  • Registratie: Oktober 2006
  • Laatst online: 03-10 13:27
@QuestionMark: Dit had ik inderdaad gevonden. Enig idee hoe ik de eerste regel (niet uitvoeren als er nog bestanden met .!sync in de folder staan) kan toevoegen hieraan?

Edit;

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
set inputFolder=C:\folder1
set extension=!sync

IF EXIST %inputFolder%\*.%extension% GOTO exists

goto end


:exists

echo exist, NOT moving files.
pause
exit


:end

echo does not exist, MOVING files
robocopy C:\folder1 C:\folder2 /MOV /XF *sync*


pause
exit

De pauses in het script zijn voor het testen.

Ik heb aan de hand van bovenstaand en dit topic het geheel bijna werkend gekregen. Ik zit nu met het volgende probleem:

1) subfolders worden niet gecontroleerd op het bestaan van .!sync bestandjes
2) directories worden niet verplaatst, losse files wel

[ Voor 69% gewijzigd door Mmore op 19-06-2014 22:26 ]


Acties:
  • 0 Henk 'm!

  • ThomasG
  • Registratie: Juni 2006
  • Laatst online: 23-09 14:00
Volgens mij kun je dat met een for-loop doen, waarbij je recursive door subdirectories gaat opzoek naar een .!sync bestand. Elke entry in de loop is dan een .!sync bestand, en kun je het script beëindigen. Misschien niet de netste oplossing, maar in de richting van:
code:
1
FOR /R C:\folder1\ %%a IN (*.!sync) GOTO exists


Edit: Voor subdirectorie zul je robocopy moeten voeren met: /S (subdirectories, behalve legen) of /E (subdirectories, inclusief legen.)

[ Voor 16% gewijzigd door ThomasG op 19-06-2014 22:57 ]


Acties:
  • 0 Henk 'm!

  • Mmore
  • Registratie: Oktober 2006
  • Laatst online: 03-10 13:27
Ik heb het bijna helemaal werkend. Het enige dat ik nu mis is dat subfolders niet worden gekopieerd door robocopy, geen idee waarom.

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
:: set folders
set inFolder=C:\folder1
set outFolder=C:\folder2

:: Scan for the .!sync extention in this folder and sub directories
for /r "%inFolder%" %%G in (*.!sync) do GOTO exists

:: this will only be triggered if we have not already found the appropiate file extention!
goto end


:: the extention has been found in this folder. Do NOT start moving shit.
:exists

echo exist, NOT copying files.
pause
exit

:: the extention has not been found in this folder or subfolders, 
:end

echo does not exist, COPYING files
robocopy "%inFolder%" "%outFolder%" /MOV /E /XF *sync*


pause
exit
(alle pauses zijn voor debuggen)

edit: verholpen. Script werkt nu 100%. Heb de code hierboven aangepast voor idereen die dit later terugleest. Zijn er dingen die hier beter aan kunnen?

[ Voor 9% gewijzigd door Mmore op 19-06-2014 23:05 ]

Pagina: 1