Just nu i M3-nätverket
Gå till innehåll

Kopiera filer från en enhet till C katalogen


cybertears

Rekommendera Poster

jag testar i VBA-miljö, dvs Excel...

	Dim WSHShell, desktop
Set WSHShell = CreateObject("WScript.Shell")
desktop = WSHShell.SpecialFolders("Desktop")
MsgBox desktop

och den koden ger mig sökvägen på min dator (Win Vista) till skrivbordet. Testa på Win Xp, om den fungerar där fungerar den för alla versioner av Windows.

Länk till kommentar
Dela på andra webbplatser

Din kod

Dim WSHShell, desktop
Set WSHShell = CreateObject("WScript.Shell")
desktop = WSHShell.SpecialFolders("Desktop")
MsgBox desktop

Fungerade felfritt :)

Länk till kommentar
Dela på andra webbplatser

såhär blev min kod

 



Dim fs, path1, path2 'våra variabler

Set fs = CreateObject("Scripting.FileSystemObject") 'skapar mitt fs som är mitt objekt

Set objNetwork = wscript.CreateObject("wscript.network") ' skapar ett "objekt" för nätverket

Set oShell = CreateObject("WScript.Shell")

strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")
'strUserName=objNetwork.Username 'Kollar vilken användare som är inloggad

path1 = strHomeFolder & "\Desktop\test.odt" 'kopiera filen test från C:\Users\InloggadAnvändare\Desktop

path2 = strHomeFolder & "\Desktop\test\test.odt" 'kopiera filen test till C:\Users\InloggadAnvändare\Desktop\test

fs.CopyFile path1, path2 
MsgBox path1 '<-- test för att se så att sökvägen fungerar
'MsgBox path2 '<-- test för att se så att sökvägen fungerar
Set fs = Nothing ' dödar funktionen fs

 

nu till mitt nuvarande problem.

 

jag vill kolla om filen existerar.

 

jag hittade detta skriptet.

 



Dim objFSO

[size=2]Set oShell = CreateObject("WScript.Shell")[/size]

Set fso = CreateObject("Scripting.FileSystemObject")

strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")

If (fso.FileExists(strHomeFolder & "\Desktop\test.odt")) Then
  msg = path & " exists."
Else
  msg = path & " doesn't exist."
End If

 

men när jag kör skriptet så säger den att filen existerar och precis direkt efter så får jag fram doesn't exist., så vad är felet?

 

Tack på förhand!

 

/Jesse

Länk till kommentar
Dela på andra webbplatser

problem löst:

 

 


Dim filespec, msg
Set oShell = CreateObject("WScript.Shell")

strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")

filespec = strHomeFolder & "\Desktop\test.odt"
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(filespec)) Then
 msg = filespec & " exists."
Else
 msg = filespec & " doesn't exist."
End If
WScript.Echo(msg)

Länk till kommentar
Dela på andra webbplatser

Fast fortfarande, du hittar nog inte alltid till Skrivbordet med den koden.

 

Det finns ingenstans skriver att Desktop måste ligga under Userprofile.

 

Med den där koden hamnar du på min C-enhet än, mitt skrivbord ligger, som sagt, på D.

 

Varför använder du inte det jag gav dig:

Set WSHShell = CreateObject("WScript.Shell")
desktop = WSHShell.SpecialFolders("Desktop")

?

Då hamnar du alltid rätt.

Länk till kommentar
Dela på andra webbplatser

strHomeFolder kollar var användaren har sin "hemkatalog" så om hemkatalogen ligger på C eller D ska inte ha någon betydelse för den ska skriva ut t.e.x

 

C:\Users\a och det får jag fram genom strHomeFolder

 

 

Fast fortfarande, du hittar nog inte alltid till Skrivbordet med den koden.

 

Det finns ingenstans skriver att Desktop måste ligga under Userprofile.

 

Med den där koden hamnar du på min C-enhet än, mitt skrivbord ligger, som sagt, på D.

 

Varför använder du inte det jag gav dig:

Set WSHShell = CreateObject("WScript.Shell")
desktop = WSHShell.SpecialFolders("Desktop")

?

Då hamnar du alltid rätt.

Länk till kommentar
Dela på andra webbplatser

så jag förstår inte riktigt vad du vill ha ut.

 

skulle vara bra att se ett litet exempel så kanske jag kommer med på banan...

Länk till kommentar
Dela på andra webbplatser

En snabbkurs.

 

En användaren "hemma-mapp" ligger ALLTID på C:

i princip. Den går iofs att flytta om man verkligen vill.

 

I denna mapp ligger som standard Application Data (med temp-mappar och liknande) och användarens filer (Dokument, bilder, skrivbord)

Användarens filer kan användaren lätt flytta till en annan disk, annan plats på samma disk eller liknande.

Application data är svårare att flytta men om man verkligen vill går även det.

 

Därav att det finns miljövariabler som pekar direkt till det olika delarna bland användarens dokument. Att man via %appdata% i utforskaren kommer till en användares mapp Application Data, att du via programkod kan ta fram exakt sökvägen till Desktop, Documents osv.

 

När du försöker nå systemresurser ska du ALDRIG mata in en hårdkodad sökväg. Inte minst eftersom saker och ting kan ändras mellan olika versioner av operativsystemet, mappar kan flyttas, byta namn osv men använder du en miljövariabel kommer du alltid rätt ändå.

 

Som sagt din kod, ditt exempel, ger alltid

C:\Users\xxxx\Desktop

Min kod, ger på min dator

D:\Users\xxxx\Desktop

 

Okej, för det mesta stämmer din kod men inte alltid.

Länk till kommentar
Dela på andra webbplatser

så om vi ska försöka få in din sträng hur lägger du upp det?

 

 

min kod nu:

Dim filespec, msg
Set oShell = CreateObject("WScript.Shell")

strHomeFolder = oShell.ExpandEnvironmentStrings("%USERPROFILE%")

filespec = strHomeFolder & "\Desktop\test.odt"
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(filespec)) Then
 msg = filespec & " exists."
Else
 msg = filespec & " doesn't exist."
End If
WScript.Echo(msg)

Länk till kommentar
Dela på andra webbplatser

Bättre såhär:

 

Dim filespec, msg, desktop

Set WSHShell = CreateObject("WScript.Shell")
desktop = WSHShell.SpecialFolders("Desktop")
'msgbox desktop
filespec = desktop & "\test.odt"
Set fso = CreateObject("Scripting.FileSystemObject")
If (fso.FileExists(filespec)) Then
 msg = filespec & " exists."
Else
 msg = filespec & " doesn't exist."
End If
WScript.Echo(msg)

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...