Top-Themen

AppleEntwicklungHardwareInternetLinuxMicrosoftMultimediaNetzwerkeOff TopicSicherheitSonstige SystemeVirtualisierungWeiterbildungZusammenarbeit

Aktuelle Themen

Administrator.de FeedbackApache ServerAppleAssemblerAudioAusbildungAuslandBackupBasicBatch & ShellBenchmarksBibliotheken & ToolkitsBlogsCloud-DiensteClusterCMSCPU, RAM, MainboardsCSSC und C++DatenbankenDatenschutzDebianDigitiales FernsehenDNSDrucker und ScannerDSL, VDSLE-BooksE-BusinessE-MailEntwicklungErkennung und -AbwehrExchange ServerFestplatten, SSD, RaidFirewallFlatratesGoogle AndroidGrafikGrafikkarten & MonitoreGroupwareHardwareHosting & HousingHTMLHumor (lol)Hyper-VIconsIDE & EditorenInformationsdiensteInstallationInstant MessagingInternetInternet DomäneniOSISDN & AnaloganschlüsseiTunesJavaJavaScriptKiXtartKVMLAN, WAN, WirelessLinuxLinux DesktopLinux NetzwerkLinux ToolsLinux UserverwaltungLizenzierungMac OS XMicrosoftMicrosoft OfficeMikroTik RouterOSMonitoringMultimediaMultimedia & ZubehörNetzwerkeNetzwerkgrundlagenNetzwerkmanagementNetzwerkprotokolleNotebook & ZubehörNovell NetwareOff TopicOpenOffice, LibreOfficeOutlook & MailPapierkorbPascal und DelphiPeripheriegerätePerlPHPPythonRechtliche FragenRedHat, CentOS, FedoraRouter & RoutingSambaSAN, NAS, DASSchriftartenSchulung & TrainingSEOServerServer-HardwareSicherheitSicherheits-ToolsSicherheitsgrundlagenSolarisSonstige SystemeSoziale NetzwerkeSpeicherkartenStudentenjobs & PraktikumSuche ProjektpartnerSuseSwitche und HubsTipps & TricksTK-Netze & GeräteUbuntuUMTS, EDGE & GPRSUtilitiesVB for ApplicationsVerschlüsselung & ZertifikateVideo & StreamingViren und TrojanerVirtualisierungVisual StudioVmwareVoice over IPWebbrowserWebentwicklungWeiterbildungWindows 7Windows 8Windows 10Windows InstallationWindows MobileWindows NetzwerkWindows ServerWindows SystemdateienWindows ToolsWindows UpdateWindows UserverwaltungWindows VistaWindows XPXenserverXMLZusammenarbeit
Kommentar vom Moderator Biber am 14.11.2010 um 23:30:20 Uhr
Verschoben von "Tools & Utilities" nach "Batch & Shell".

Verknüpfung auf Desktop per Batch anlegen

Frage Entwicklung Batch & Shell

Mitglied: batch-lernen

batch-lernen (Level 1) - Jetzt verbinden

14.11.2010, aktualisiert 18.10.2012, 16623 Aufrufe, 14 Kommentare

Hallo zusammen,

ich bin neu hier und hoffe ihr könnt mir helfen. Ich habe schon viel dazu gegoogelt aber nichts gefunden.

Folgendes Problem:

Ich habe eine Batch Datei die per Autostart beim Systemstart automatisch Ordner mit dem aktuellen Datum in einem bestimmten Ordnerpfad ablegt. Das sieht dann ungefähr so aus:

C:\Pfad und dann Ordner Jahr, Ordner Monat, Ordner Tag
Es werden also drei Ordner angelegt.

Ich möchte das eine Verknüpfung vom letzten Ordner (aktueller Tag) auf dem Desktop angelegt wird und dann auf z.B. "Heute" umbenannt wird. Genau das schaffe ich nicht. Im I-Net finde ich dazu nur VBS Lösungen. Ich hätte das aber gerne alles in einem BAT File.

Hier mein Code den ich bisher habe:
01.
del "%userprofile%\desktop\heute.lnk 
02.
Set yyyy=%DATE:~6,4% 
03.
MKDIR %yyyy% 
04.
cd %yyyy% 
05.
Set mm=%DATE:~3,2% 
06.
MKDIR %mm% 
07.
cd %mm% 
08.
Set dd=%DATE:~0,2% 
09.
MKDIR %dd%
Bitte nicht wundern. Ich möchte natürlich immer das vorher die alte Verknüpfung vom vorherigen Tag gelöscht wird. DEshalb der del Befehl.

Ich hoffe ihr könnt mir helfen.

Gruß
Der Batch Schüler


[Edit Biber] Codeformatierung.[/Edit]
Mitglied: bastla
14.11.2010, aktualisiert 18.10.2012
Hallo batch-lernen und willkommen im Forum!

Mit "native" Batch wirst Du's nicht gelöst bekommen - also entweder ein passendes Tool finden oder doch ein VBScript - lässt sich aber (siehe zB hier) in einen Batch einbetten, sodass Du trotzdem nur eine Datei zu verwalten brauchst ...

Grüße
bastla
Bitte warten ..
Mitglied: 60730
14.11.2010 um 21:34 Uhr
moin,

zwei,drei Tipps:

  • du kannst das erzeugen der Ordner einfacher haben...

01.
md %DATE:~6,4%\%DATE:~3,2%\%DATE:~0,2%
(wobei ich deinen Weg nur Beispielhaft nachgebaut habe, normalerweise hätte ich ein Laufwerk:\ davor geschrieben)

und deine andere Frage läßt sich auch anders einfacher lösen:

einfach einen simplen einzeiler schnippseln...
01.
Explorer /e,c:\%DATE:~6,4%\%DATE:~3,2%\%DATE:~0,2%
Hier gehts nicht ohne ein bemnanntes Laufwerk.

Und von dieser Batch erzeugst du dir einen Link zum draufklicken.

Btw: Tipp 3 wären die <Code> </Code> Blöcke, zwischen die ich meine (einzeiler) geschrieben habe, erstrecht bei mehrzeilern deutlich besser zu lesen

Gruß
Bitte warten ..
Mitglied: batch-lernen
15.11.2010 um 13:49 Uhr
OK danke erstmal. Dann such ich mir was als VBS.

Gruß
Bitte warten ..
Mitglied: bastla
15.11.2010, aktualisiert 18.10.2012
Hallo batch-lernen!

Nur interessehalber: Was spricht gegen die beiden präsentierten Ansätze (abgesehen davon, dass "was als VBS" in meinem Vorschlag - siehe Link - inkludiert wäre)?

Grüße
bastla
Bitte warten ..
Mitglied: batch-lernen
15.11.2010 um 15:19 Uhr
Hallo bastla.

Da hatte ich mich nicht richtig ausgedrückt. Ich bin deinem Vorschlag gefolgt und habe ein VBS erstellt und das in meine Batch eingebunden. Das geht auch super.

Jetzt steh ich nur noch vor dem Problem das im VBS ein fester Pfad angegeben ist auf den die Verknüpfung verweist. Ich wollte aber das der immer variabel also zum Ordner mit dem aktuellen Tag verweist.

Gruß
Bitte warten ..
Mitglied: bastla
15.11.2010 um 16:26 Uhr
Hallo batch-lernen!
... im VBS ein fester Pfad angegeben ist
Muss ja nicht:
01.
@echo off & setlocal 
02.
set "zielpfad=%userprofile%\Desktop" 
03.
 
04.
::Name der Verknüpfung (ohne ".lnk") 
05.
set "progtitel=Heute" 
06.
::Speicherort der Programmdatei (wird auch für "Ausführen in:" verwendet) 
07.
set "progdir=C:\Pfad\%date:~-4%\%date:~-7,2%\%date:~-10,2%" 
08.
set "progexe=" 
09.
::Kommentar 
10.
set "beschreibung=Erklärung eigentlich unnötig ..." 
11.
 
12.
::Bei Bedarf Ordner erstellen: 
13.
md "%zielpfad%" 2>nul 
14.
md "%progdir%" 2>nul 
15.
 
16.
::temporäres VBScript erzeugen ... 
17.
 >%temp%\MakeShortCut.vbs echo Set objShell=WScript.CreateObject("Wscript.Shell") 
18.
>>%temp%\MakeShortCut.vbs echo Set objShortcut=objShell.CreateShortcut("%zielpfad%\%progtitel%.lnk") 
19.
>>%temp%\MakeShortCut.vbs echo objShortcut.TargetPath="%progdir%\%progexe%" 
20.
>>%temp%\MakeShortCut.vbs echo objShortcut.Description="%beschreibung%" 
21.
>>%temp%\MakeShortCut.vbs echo objShortcut.WorkingDirectory="%progdir%" 
22.
>>%temp%\MakeShortCut.vbs echo objShortcut.Save 
23.
 
24.
::... ausführen ... 
25.
cscript //nologo %temp%\MakeShortCut.vbs 
26.
 
27.
::... und wieder löschen. 
28.
del %temp%\MakeShortCut.vbs
Grüße
bastla
Bitte warten ..
Mitglied: batch-lernen
15.11.2010 um 17:46 Uhr
Hallo,

das hab ich jetzt nicht verstanden. Sorry aber ich bin da doch ein ziemlicher DAU.

Kannst du mir das so umbauen, dass es immer einen variablen Link anlegt?

Set Shell = CreateObject("WScript.Shell")
DesktopPath = Shell.SpecialFolders("Desktop")
Set link = Shell.CreateShortcut(DesktopPath & "\Heutige_Aufnahmen.lnk")
link.Arguments = "\%date:~-4%\%date:~-7,2%\%date:~-10,2%"
link.Description = "Heute"
link.IconLocation = "app.exe,1"
link.TargetPath = "C:\Neuer Ordner\%date:~-4%\%date:~-7,2%\%date:~-10,2%"
link.WindowStyle = 1
link.WorkingDirectory = "C:\Neuer Ordner"
link.Save

Mir fehl da irgendwie der Überblick.

Gruß
Bitte warten ..
Mitglied: bastla
15.11.2010 um 18:06 Uhr
Hallo batch-lernen!

Mein Batch (kannst du Deinem Startbatch hinzufügen bzw so wie gepostet als zB "Test.cmd" speichern und direkt ausführen) erstellt (für den heutigen Tag - siehe Zeilen 7 und 14) einen Ordner "C:\Pfad\2010\11\15" und legt auf dem Desktop eine Verknüpfung zu diesem Ordner mit dem Namen "Heute" an - wenn Du jetzt andere Pfade / Namen (als in Deiner ursprünglichen Beschreibung oben) verwenden willst, brauchst Du doch nur die Zeilen 7 und 5 abzuändern ...

Und: Dass die eigentlicht Arbeit das VBScript macht, muss Dich eigentlich gar nicht kümmern, da das Script ohnehin vom Batch selbst erzeugt wird. Wenn Du tatsächlich dieses Script noch beeinflussen willst, kannst Du die entsprechenden Änderungen ja eintragen - der Unterschied zu Deinem (trotz entsprechenden Hinweises von TimoBeil nicht unter "Code"-Tags) geposteten Entwurf besteht eigentlich nur darin, dass bei meinem Vorschlag "objShortcut" anstelle von "link" verwendet wird ...

Grüße
bastla
Bitte warten ..
Mitglied: batch-lernen
16.11.2010 um 13:02 Uhr
Hallo bastla,

du bist echt super. Ich danke dir!

Es funktioniert einwandfrei!!!

Ich Depp hab das als *.vbs gespeichert und mich gewundert warum es nicht geht...

Ich kann nur sagen. Super Forum!!!

Gruß
batch-lernen
Bitte warten ..
Mitglied: bastla
16.11.2010 um 13:15 Uhr
Hallo batch-lernen!

Danke für die Blumen ...

Aus Deinem Nick und der einleitenden Beschreibung hatte ich geschlossen, Du könntest die "verbatchte" Fassung brauchen - ansonsten ließe sich der Pfad natürlich auch per VBS aus dem aktuellen Datum erzeugen:
objShortcut.TargetPath = "C:\Neuer Ordner\" & Year(Date) & "\" & Right("0" & Month(Date), 2) & "\" & Right("0" & Day(Date), 2)
Grüße
bastla
Bitte warten ..
Mitglied: micneu
17.11.2010 um 00:03 Uhr
schau dir mal das program nircmd an
http://www.nirsoft.net/utils/nircmd.html

das kannst du gut in dein script mit einbauen.
01.
nircmdc shortcut "%PROGRAMME%\Macdoc7\MacDoc2006.exe" "~$folder.desktop$" "MacDoc2006"
legt eine verlnüpfung auf den desktop des angemeldeten users mit dem namen "MacDoc2006" an.

was spricht den gegen powershell, möchtest du noch eine möglichkeit mit powershell haben?

gruß michael
Bitte warten ..
Mitglied: micneu
17.11.2010 um 01:05 Uhr
ich habe es dir mal in powershell gebaut.
ich habe auch noch abfragen erstellt ob die verzeichnisse schon angelegt sind.
so bekommst du keine fehler.

01.
#   ************************************************************** 
02.
#   * verknuepfung anlegen   * 
03.
#   * * 
04.
#   *                                                            * 
05.
#   ************************************************************** 
06.
#    Das muß einmal auf der powershell ausgeführt werden 
07.
#     "Set-ExecutionPolicy Unrestricted" 
08.
#   ************************************************************** 
09.
#   * Erstellt M.N - POWERSHELL / Entwicklung   16.11.2010                   * 
10.
#   ************************************************************** 
11.
 
12.
#$ErrorActionPreference = 'stop' 
13.
#$ErrorActionPreference = 'SilentyContinue' 
14.
$WshShell = New-Object -ComObject WScript.Shell 
15.
$QUELLE = "C:\Temp" 
16.
$YYYY = Get-Date -format 'yyyy'  
17.
echo "Jahr: `t$YYYY" 
18.
$MM = Get-Date -format 'MM' 
19.
echo "Monat: `t$MM" 
20.
$DD = Get-Date -format 'dd' 
21.
echo "Tag: `t$DD" 
22.
if (Test-Path $QUELLE\$YYYY) { 
23.
    echo "Verzeichnis $YYYY ist da" } 
24.
else { 
25.
    echo "Verzeichnis $YYYY nicht da" 
26.
    md "$QUELLE\$YYYY" } 
27.
 
28.
if (Test-Path $QUELLE\$YYYY\$MM) { 
29.
    echo "Verzeichnis $YYYY\$MM ist da" } 
30.
else { 
31.
    echo "Verzeichnis $YYYY\$MM nicht da" 
32.
    md "$QUELLE\$YYYY\$MM" } 
33.
     
34.
if (Test-Path $QUELLE\$YYYY\$MM\$DD) { 
35.
    echo "Verzeichnis $YYYY\$MM\$DD ist da" } 
36.
else { 
37.
    echo "Verzeichnis $YYYY\$MM\$DD nicht da" 
38.
    md "$QUELLE\$YYYY\$MM\$DD" } 
39.
 
40.
if (Test-Path "$HOME\desktop\heute.lnk") { 
41.
    echo "verknüpfung ist da" 
42.
    del "$HOME\desktop\heute.lnk" 
43.
    sleep 2 
44.
    $link = $wshshell.CreateShortcut(”$HOME\Desktop\heute.lnk”) 
45.
    $link.targetpath = "$QUELLE\$YYYY\$MM\$DD" 
46.
    $link.save() } 
47.
else { 
48.
    $link = $wshshell.CreateShortcut(”$HOME\Desktop\heute.lnk”) 
49.
    $link.targetpath = "$QUELLE\$YYYY\$MM\$DD" 
50.
    $link.save() }
einige der echo ausgaben habe ich nur drinn zum testen die kannst du rausnehmen.

gruß michael
Bitte warten ..
Mitglied: batch-lernen
17.11.2010 um 09:28 Uhr
Hallo,

danke auch für deinen Vorschlag. Aber ich denke das funktioniert so ganz gut wie es bastla vorgeschlagen hat. Ich muss es jetzt nur noch auf dem eigentlichen Rechner testen, für den ich das gebraucht habe. Das wird wahrscheinlich am Wochende sein.

Sollte es wider erwarten Probleme geben - hab nämlich festgestellt das ein Win XP Rechner manchmal andere Dinge macht als ein Win 7 Rechner - komme ich noch mal auf euch zurück.

@micneu: Ich muss aber sagen, mit Power Shell kenne ich mich nun gar nicht aus.

Viele Grüße
batch-lernen
Bitte warten ..
Mitglied: micneu
19.11.2010 um 18:37 Uhr
Zitat von batch-lernen:
@micneu: Ich muss aber sagen, mit Power Shell kenne ich mich nun gar nicht aus.

ich getsehe, ich kenne mich auch noch NICHT wirklich mit powershell aus.
stelle jeden tag auf neue fest das powershell doch sehr mächtig ist.

manchmal etwas umständlicher als die BASH (linux) aber es macht spaß.

gruß michael
Bitte warten ..
Neuester Wissensbeitrag
Humor (lol)

Linkliste für Adventskalender

(3)

Information von nikoatit zum Thema Humor (lol) ...

Heiß diskutierte Inhalte
Windows Server
DHCP Server switchen (25)

Frage von M.Marz zum Thema Windows Server ...

SAN, NAS, DAS
gelöst HP-Proliant Microserver Betriebssystem (14)

Frage von Yannosch zum Thema SAN, NAS, DAS ...

Grafikkarten & Monitore
Win 10 Grafikkarte Crash von Software? (13)

Frage von Marabunta zum Thema Grafikkarten & Monitore ...

Windows 7
Verteillösung für IT-Raum benötigt (12)

Frage von TheM-Man zum Thema Windows 7 ...