Tjenixen!! Skulle nog rekomendera SHFileoperation. Gör det du vill. Har snabbt slagit ihop lite funktioner som kapslar anropen till den efter funktion. Finns säkert några fel. Mycket nöje: Suck... Nu har du säkert redan löst den men ändå, om du kör 'cmd /c del c:\F*.T*' eller 'command /c del c:\F*.T*' på Win9x så borde det funka. Nix, bad min chef hoppa från västerbron.. Sen kan du ju använda VBscript:Köra Copy, Delete osv från via shell()
Såg på CNN att i tider då Stora Brittanien, USA och andra stornationer utalar sig om att Bomba, utplåna och hämnas hade en borgmästare på kanarieholmarna uttalat sig kort: -Please, Don't kill all the muslims.
Tyckte det var rätt fint och enkelt i en arg värld..
Nåväl ska inte uppehålla med en massa dravel bara för att jag inte har några kompisar som orkar med mej mer än en kvart i taget...
Fråga1:
Hur får man bort dosrutan som poppar upp och säger slutförd om man kör shell("program"), händer tex om man anropar xcopy.
fråga2:
Hur anropar man tex copy, delete och rename via shell("")
Och som svar på varför jag inte använder vbkommandon för det så kan jag svara att jag är för sopig för att få det funka bra när det är en massa filer som heter olika saker och jag ska behandla tex filerna T1*.F* och flytta runt, radera och byta namn..
Men har nån nåt superenkelt sätt för det så blir jag också glad förståss!
Med vänliga hälsningar
Rickard, VärldstrategSv: Hur fixar man bort dosrutan när man kör shell()
Option Explicit
Private Type SHFILEOPSTRUCT
hWnd As Long
wFunc As Long
pFrom As String
pTo As String
fFlags As Integer
fAborted As Boolean
hNameMaps As Long
sProgress As String
End Type
Private Const FO_MOVE = &H1
Private Const FO_COPY = &H2
Private Const FO_DELETE = &H3
Private Const FO_RENAME = &H4
Private Const FOF_SILENT = &H4
Private Const FOF_NOCONFIRMATION = &H10
Private Const FOF_ALLOWUNDO = &H40
Private Declare Function SHFileOperation Lib "shell32.dll" Alias "SHFileOperationA" (lpFileOp As SHFILEOPSTRUCT) As Long
Public Function SHMoveFiles(Source As String, Destination As String, Optional Silent As Boolean, Optional Confirmation As Boolean = True, Optional AllowUndo As Boolean) As Boolean
Dim lpFileOp As SHFILEOPSTRUCT
With lpFileOp
.wFunc = FO_MOVE
.pFrom = Source
.pTo = Destination
.fFlags = (FOF_ALLOWUNDO And AllowUndo) Or (FOF_SILENT And Silent) Or (FOF_NOCONFIRMATION And Not Confirmation)
End With
SHMoveFiles = (SHFileOperation(lpFileOp) = 0)
End Function
Public Function SHCopyFiles(Source As String, Destination As String, Optional Silent As Boolean, Optional Confirmation As Boolean = True, Optional AllowUndo As Boolean) As Boolean
Dim lpFileOp As SHFILEOPSTRUCT
With lpFileOp
.wFunc = FO_COPY
.pFrom = Source
.pTo = Destination
.fFlags = (FOF_ALLOWUNDO And AllowUndo) Or (FOF_SILENT And Silent) Or (FOF_NOCONFIRMATION And Not Confirmation)
End With
SHCopyFiles = (SHFileOperation(lpFileOp) = 0)
End Function
Public Function SHDeleteFiles(FileName As String, Optional Silent As Boolean, Optional Confirmation As Boolean = True, Optional AllowUndo As Boolean) As Boolean
Dim lpFileOp As SHFILEOPSTRUCT
With lpFileOp
.wFunc = FO_DELETE
.pFrom = FileName
.fFlags = (FOF_ALLOWUNDO And AllowUndo) Or (FOF_SILENT And Silent) Or (FOF_NOCONFIRMATION And Not Confirmation)
End With
SHDeleteFiles = (SHFileOperation(lpFileOp) = 0)
End Function
Public Function SHRenameFile(Source As String, Destination As String, Optional Silent As Boolean, Optional Confirmation As Boolean = True, Optional AllowUndo As Boolean) As Boolean
Dim lpFileOp As SHFILEOPSTRUCT
With lpFileOp
.wFunc = FO_RENAME
.pFrom = Source
.pTo = Destination
.fFlags = (FOF_ALLOWUNDO And AllowUndo) Or (FOF_SILENT And Silent) Or (FOF_NOCONFIRMATION And Not Confirmation)
End With
SHRenameFile = (SHFileOperation(lpFileOp) = 0)
End FunctionSv: Hur fixar man bort dosrutan när man kör shell()
Jag önskade nästan att du inte skulle svara för du är så jävla ambitiös.. Och ändå..
Jag fattar inte hur jag ska lätt kunna klistra in detta när jag
1. Inte vet vad filerna heter.. F*.T* försök att stoppa in det får du se på pangbom. Det är Hundratals filer som ska flyttas..
2. Som bara vill använda COPY som finns i Command.com som är jättebra om man tex vill ta fil 1 + fil 2 + 3 + 4 kopiera i hop dom och kasta dom i katalogen hokus pokus... och om man kan det så är problemet piff paff på 10 minuter.
3. Är en trött pojke utlurad på kontoret miss i nassen bara för att min jävla chef fått för sej att han ska leverara en fjantig access snurra i morgon kl 9...
Jag drar tillbaka att jag vill veta alternativa lösningar.. Går det inte köra vanliga doskommandon på nåt piffigt sätt..
Annars blir det batfil! Jag varnar bara! (Jag har dessutom kärnvapen)
//Rickard ;)Sv: Hur fixar man bort dosrutan när man kör shell()
Sv: Hur fixar man bort dosrutan när man kör shell()
Toppen tack!
Ska prova!
//RickardSv: Köra Copy, Delete osv från via shell()
Set fso = Wscript.CreateObject("Scripting.FileSystemObject")
fso.CopyFile "c:\temp\*.*", "c:\temp2\"
/Janne