Batch bestand voor verplaatsen van bestanden

Pagina: 1
Acties:

Vraag


Acties:
  • 0 Henk 'm!

  • SwooX
  • Registratie: Oktober 2015
  • Laatst online: 04-02 18:55
Mijn vraag:
Ik ben bezig om een batch bestand te maken voor het verplaatsen van een bestand. Dit lukt mij echter kan ik niet correct een logfile aanmaken. De logfile wordt aangemaakt maar ik krijg duizenden regels van 'Bestand is verplaatst'. Dat is dan ook mijn ingestelde regel voor als het gelukt is.

Relevante software en hardware die ik gebruik:
Kladblok

Wat ik al gevonden of geprobeerd heb:
IF EXIST text.txt (
GOTO :Succeed )
ELSE (
GOTO :Failed
)

:Succeed
Echo Bestand is verplaatst.
test.bat >> C:\Users\--\Desktop\Log\Log.txt

:Failed
Echo Bestand is niet verplaatst.
test.bat >> C:\Users\--\Desktop\Log\Log.txt

Heb de username eruit geplukt voor de privacy.

Once again open up your bag of tricks!

Alle reacties


Acties:
  • +1 Henk 'm!

  • ElCondor
  • Registratie: Juni 2001
  • Laatst online: 14:30

ElCondor

Geluk is Onmisbaar

Ik zie de Move opdracht helemaal niet...
Zou je het niet in PowerShell schrijven? Want daar heb je wat meer controle over wat en waar je wilt loggen.

Hay 365 dias en un año y 366 occasiones para festejar (Boliviaans spreekwoord)


Acties:
  • 0 Henk 'm!

  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 14:08
[verwijderd]

[ Voor 107% gewijzigd door Mar.tin op 28-07-2022 12:29 ]


Acties:
  • 0 Henk 'm!

  • SwooX
  • Registratie: Oktober 2015
  • Laatst online: 04-02 18:55
ElCondor schreef op vrijdag 10 februari 2017 @ 13:33:
Ik zie de Move opdracht helemaal niet...
Zou je het niet in PowerShell schrijven? Want daar heb je wat meer controle over wat en waar je wilt loggen.
De move heb ik eruit gehaald, die werkt wel. Wil echter alleen toepassen dat er een log-file komt.
Wat heb je zelf al gevonden? Volgens mij zijn er met een klein beetje googlewerk honderden, zo niet duizenden mensen te vinden die iets soortgelijks willen..

Hoeveel bestanden probeer je te verplaatsen?

Ik gebruik voor logging in .batjes meestal iets in de strekking van
code:
1
%DATE% %TIME% %COMPUTERNAME% %USERNAME% - %variabele voor bestandsnaam% Copy Success! >> log.txt

Aanvullend is een probleem dat je nadat je de succeed regel schrijft, je doorgaat naar :Failed.
Heb zelfs pagina 2 bezocht op Google :P

Enige waar ik wat wijzer van werd is dus wat ik heb geplaatst net.

[ Voor 45% gewijzigd door SwooX op 10-02-2017 13:36 ]

Once again open up your bag of tricks!


Acties:
  • +1 Henk 'm!

  • naitsoezn
  • Registratie: December 2002
  • Niet online

naitsoezn

Nait Soez'n!

Roep je nou de hele tijd recursief het batch-bestand zelf aan bij :Succeed of :Failed?

't Het nog nooit, nog nooit zo donker west, of 't wer altied wel weer licht


Acties:
  • 0 Henk 'm!

  • SwooX
  • Registratie: Oktober 2015
  • Laatst online: 04-02 18:55
naitsoezn schreef op vrijdag 10 februari 2017 @ 13:38:
Roep je nou de hele tijd recursief het batch-bestand zelf aan bij :Succeed of :Failed?
Betreft programmeren ben ik echt een rookie, dus heb echt geen idee wat je bedoelt.

Bedoel je dat van de output? met >>

Once again open up your bag of tricks!


Acties:
  • 0 Henk 'm!

  • Dido
  • Registratie: Maart 2002
  • Laatst online: 09-10 19:43

Dido

heforshe

naitsoezn schreef op vrijdag 10 februari 2017 @ 13:38:
Roep je nou de hele tijd recursief het batch-bestand zelf aan bij :Succeed of :Failed?
Zo te zien wel. Hij lijkt te denken dat hij daarmee alleen maar de output wegschrijft, maar hij roept inderdaad opnieuw de batch-file aan, met dezelfde output. Zo gek is het dus niet dat hij oneindig blijft doorgaan :D

Wat betekent mijn avatar?


Acties:
  • 0 Henk 'm!

  • naitsoezn
  • Registratie: December 2002
  • Niet online

naitsoezn

Nait Soez'n!

SwooX schreef op vrijdag 10 februari 2017 @ 13:40:
[...]

Betreft programmeren ben ik echt een rookie, dus heb echt geen idee wat je bedoelt.

Bedoel je dat van de output? met >>
Als je batch-bestand test.bat heet, dan roep je met "test.bat >> C:\Users\--\Desktop\Log\Log.txt" telkens zichzelf aan, terwijl je de output naar Log.txt stuurt. Oneindig.

't Het nog nooit, nog nooit zo donker west, of 't wer altied wel weer licht


Acties:
  • 0 Henk 'm!

  • Rone
  • Registratie: April 2002
  • Niet online

Rone

Moderator Tweaking
Met je huidige manier wordt na een 'succeed' alsnog 'failed' uitgevoerd, want daar lus je niet omheen. Verder kun je een echo direct aan een log-file toevoegen, in plaats van de batch-file zelf aan te roepen. Dit werkt al beter:

Batchfile:
1
2
3
4
5
6
7
8
9
IF EXIST text.txt GOTO Succeed

Echo Bestand is niet verplaatst.>> Log.txt
GOTO End

:Succeed
Echo Bestand is verplaatst.>> Log.txt

:End

PC1: 9800X3D + RX 9070 XT || PC2: 5800X3D + RTX 3080 || Laptop: 7735HS + RTX 4060


Acties:
  • 0 Henk 'm!

  • robertpNL
  • Registratie: Augustus 2003
  • Niet online
Netter:

code:
1
2
3
move /Y A.txt B.txt
if ERRORLEVEL 1 Echo Niet gelukt >> Log.txt
if ERRORLEVEL 0 Echo Gelukt >> Log.txt

Acties:
  • 0 Henk 'm!

  • SwooX
  • Registratie: Oktober 2015
  • Laatst online: 04-02 18:55
Rone schreef op vrijdag 10 februari 2017 @ 13:43:
Met je huidige manier wordt na een 'succeed' alsnog 'failed' uitgevoerd, want daar lus je niet omheen. Verder kun je een echo direct aan een log-file toevoegen, in plaats van de batch-file zelf aan te roepen. Dit werkt al beter:

Batchfile:
1
2
3
4
5
6
7
8
9
IF EXIST text.txt GOTO Succeed

Echo Bestand is niet verplaatst.>> Log.txt
GOTO End

:Succeed
Echo Bestand is verplaatst.>> Log.txt

:End
Deze doet het qua aantal regels (1) wel! Alleen nu geeft die aan dat het bestand niet is verplaatst terwijl dit wel het geval is. :9

Once again open up your bag of tricks!


Acties:
  • 0 Henk 'm!

  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 14:08
[verwijderd]

[ Voor 95% gewijzigd door Mar.tin op 28-07-2022 12:29 ]


Acties:
  • 0 Henk 'm!

  • SwooX
  • Registratie: Oktober 2015
  • Laatst online: 04-02 18:55
Mar.tin schreef op vrijdag 10 februari 2017 @ 13:49:
[...]


Zet eens een pause achter je code, staat er niet ergens toegang geweigerd? ;)

In andere woorden, heb je wel rechten om uit te lezen of het bestand bestaat, ik merk zulke vage problematiek nog wel eens op hier als we een legacy procesje verhuizen :)
1 file(s) moved..

Press any key to continue.

Once again open up your bag of tricks!


Acties:
  • 0 Henk 'm!

  • Rone
  • Registratie: April 2002
  • Niet online

Rone

Moderator Tweaking
SwooX schreef op vrijdag 10 februari 2017 @ 13:47:
[...]

Deze doet het qua aantal regels (1) wel! Alleen nu geeft die aan dat het bestand niet is verplaatst terwijl dit wel het geval is. :9
Dat is in principe onmogelijk. Als het bestand dat genoemd wordt bij IF EXIST bestaat zou alleen :Succeed moeten worden uitgevoerd. Heb je overal de juiste bestandsnamen en folders vermeld?

PC1: 9800X3D + RX 9070 XT || PC2: 5800X3D + RTX 3080 || Laptop: 7735HS + RTX 4060


Acties:
  • 0 Henk 'm!

  • SwooX
  • Registratie: Oktober 2015
  • Laatst online: 04-02 18:55
Rone schreef op vrijdag 10 februari 2017 @ 13:54:
[...]

Dat is in principe onmogelijk. Als het bestand dat genoemd wordt bij IF EXIST bestaat zou alleen :Succeed moeten worden uitgevoerd. Heb je overal de juiste bestandsnamen en folders vermeld?
@ECHO OFF
move "C:\Users\--\Desktop\Test\text.txt" C:\Users\--\Desktop\Test2\text.txt

IF EXIST text.txt GOTO Succeed

Echo Bestand is niet verplaatst.>> C:\Users\--\Desktop\Log\Log.txt
GOTO End

:Succeed
Echo Bestand is verplaatst.>> C:\Users\--\Desktop\Log\Log.txt

:End
Ik zie geen probleem of ik kijk er stomweg overheen.

Once again open up your bag of tricks!


Acties:
  • 0 Henk 'm!

  • Rone
  • Registratie: April 2002
  • Niet online

Rone

Moderator Tweaking
IF EXIST text.txt GOTO Succeed
Ja, dus vermeld daar eens het volledige pad naar text.txt, dus C:\Users\--\Desktop\Test2\text.txt.

Je geeft nu het move-commando eerst, dus dat vindt gewoon plaats. Daarna check je of text.txt betaat in het pad van het batch-bestand, wat níet het geval is, dus krijg je de verkeerde log-output.

[ Voor 41% gewijzigd door Rone op 10-02-2017 14:00 ]

PC1: 9800X3D + RX 9070 XT || PC2: 5800X3D + RTX 3080 || Laptop: 7735HS + RTX 4060


Acties:
  • 0 Henk 'm!

  • anboni
  • Registratie: Maart 2004
  • Laatst online: 05-10 05:12
Eerste stap in leren programmeren is herkennen wanneer je zelf iets moet gaan schrijven en wanneer je een bestaande tool kunt toepassen. Bestanden kopieren of verplaatsen, inclusief logging, kun je met robocopy doen. Vanaf Windows 7 volgens mij standaard beschikbaar.

code:
1
robocopy <bron> <doel> /mov /log+:log.txt

Acties:
  • 0 Henk 'm!

  • Mar.tin
  • Registratie: Januari 2010
  • Laatst online: 14:08
[verwijderd]

[ Voor 94% gewijzigd door Mar.tin op 28-07-2022 12:29 ]


Acties:
  • 0 Henk 'm!

  • SwooX
  • Registratie: Oktober 2015
  • Laatst online: 04-02 18:55
Mar.tin schreef op vrijdag 10 februari 2017 @ 13:57:
[...]


Je checkt nu vanuit de locatie van het .bat bestand of test.txt in die map bestaat ipv op het pad waar hij heengeschreven is ;)
Dit deed het hem! De IF exist gebeurd dus na het moven, snap ik nu ook wel aangezien die elke regel als een commando oppikt.

Iets met helden en cape. :+

Kan ik dit ook toepassen met een tweede bestand binnen de map?

Moet ik dan gewoon nogmaals de IF Exist kopieren en plakken maar dan met de naam van het 2e bestand?

[ Voor 16% gewijzigd door SwooX op 10-02-2017 14:02 ]

Once again open up your bag of tricks!


Acties:
  • 0 Henk 'm!

  • Squ1zZy
  • Registratie: April 2011
  • Niet online
PowerShell:
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
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
<#

.SYNOPSIS
  This script will move a file if it exists

.DESCRIPTION

  This script will move a given file if it exists and logs the filename if it's being moved

.PARAMETER

  None

.INPUTS

  None

.OUTPUTS

  Log file stored in C:\Windows\Temp\

.NOTES

  Version: 0.1
  Author: SwooX
  Creation Date: 02/10/2017
  Purpose/Change: v0.1 - Initial script development

.EXAMPLE

  .\<scriptName>.ps1

#>

#------------------------------------------[Initialisations]---------------------------------------

# Set Error Action to Silently Continue
# $ErrorActionPreference = "SilentlyContinue"

#-------------------------------------------[Declarations]-----------------------------------------

# Script Name and Version
$scriptName = "SwooX Move Files Script"
$scriptVersion = "0.1"

# Log File Info
$date = Get-Date -format MM-dd-yyyy.HH_mm_ss
$logPath = "C:\Windows\Temp"
$logName = "$scriptName.$date.log"
$logFile = Join-Path -Path $logPath -ChildPath $logName

# Variables that can be set if needed
$fileName = "C:\SwooX.txt"

#--------------------------------------------[Functions]-------------------------------------------

Function SwooX-moveFiles {
  Param()

  Begin {
    Add-Content $logFile "Moving files..."
  }

  Process {
    Try {
      If (Test-Path $fileName) {
        Add-Content $logFile "Moving file $fileName..."
      }
      Else {
        Add-Content $logFile "File $fileName doesn't exist..."
      }
    }

    Catch {
      Write-Host "Failed - Moving files..." -ForegroundColor Red
      Add-Content $logFile $_.Exception
    }
  }

  End {
    If($?) {
      Add-Content $logFile "Moving files completed successfully..."
      Add-Content $logFile " "
    }
  }
}

#--------------------------------------------[Execution]-------------------------------------------

Add-Content $logFile "$scriptName version $scriptVersion started at $(Get-Date) by $env:UserName"
Add-Content $logFile " "

SwooX-moveFiles

Add-Content $logFile "$scriptName version $scriptVersion ended at $(Get-Date) by $env:UserName"

Acties:
  • 0 Henk 'm!

  • Will_M
  • Registratie: Maart 2004
  • Niet online

Will_M

Intentionally Left Blank

Kun je niet beter een Do While loop maken?

Boldly going forward, 'cause we can't find reverse

Pagina: 1