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

Kopiera filer från en enhet till C katalogen

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.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

Din kod

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

Fungerade felfritt :)

Redigerad av jessar94

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

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

Redigerad av jessar94

Dela detta inlägg


Länk till inlägg
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)

Dela detta inlägg


Länk till inlägg
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.

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

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.

Redigerad av jessar94

Dela detta inlägg


Länk till inlägg
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...

Dela detta inlägg


Länk till inlägg
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.

Dela detta inlägg


Länk till inlägg
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)

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser
Postad (redigerade)

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)

Redigerad av jessar94

Dela detta inlägg


Länk till inlägg
Dela på andra webbplatser

Skapa ett konto eller logga in för att kommentera

Du måste vara medlem för att kunna kommentera

Skapa ett konto

Skapa ett nytt konto på vårt forum. Det är lätt!

Registrera ett nytt konto

Logga in

Redan medlem? Logga in här.

Logga in nu



×
×
  • Skapa nytt...