2009-05-18 6 views
2

Je dois créer un site Web intranet (page) qui permet aux utilisateurs d'indiquer un dossier réseau local à copier vers un emplacement de production. Actuellement, cela est fait manuellement en utilisant xcopy dans les fichiers batch. Ce que je cherche, c'est des approches sur le déclenchement de la copie, donc c'est fait au milieu de la nuit et une approche pour copier les fichiers. Je suppose que je peux exécuter xcopy à partir de mon application, mais est-ce un bon moyen de le faire? Dois-je utiliser les objets d'espace de nom System.IO pour copier les fichiers? Y a-t-il une meilleure façon de tous ensemble?Programmer des fichiers par lots à copier la nuit

L'application sera écrite en C# et ASP.NET. Nous utilisons actuellement .NET 2.0/3.0, mais je n'ai aucun problème à utiliser .NET 3.5 s'il contient de meilleures bibliothèques pour la solution.

Fondamentalement, un utilisateur indiquera le dossier réseau dont il a besoin copié avec d'autres informations commerciales. Le dossier indiqué et tous les sous-dossiers doivent être copiés vers l'emplacement cible (non défini par l'utilisateur).

S'il y a déjà une application là-bas qui fait cela, je ne m'y oppose pas non plus. Je n'ai pas besoin d'écrire des choses qui existent déjà.

+0

Merci ChirsF d'apprécier les modifications. – Brettski

Répondre

1

Pour la partie planification vous pouvez utiliser Quartz.NET

Il ne sera pas difficile d'écrire une opération xcopy en C# en utilisant System.IO. En fait, cela vous donnerait le plus grand degré de flexibilité.

+0

Qu'en est-il des performances comparées à xcopy, sera-t-il proche et existe-t-il un moyen de vérifier les fichiers copiés? – Brettski

2

Pour le premier problème (copie à minuit), je recommande la création d'une tâche planifiée qui exécute le fichier batch existant déjà (ou tout autre programme, pour cette matière)

+0

exemple: c: \ Windows \ system32 \ schtasks.exe/Créer/st 00:01:00/tr "c: \ monutilisateur \ bin \ nightwork.cmd"/sc une fois/tn NameForScheduledTask. Si vous faites un Process.Start() sur cette chaîne, vous allez programmer une tâche à 12h01. – Cheeso

+0

Une résistance que j'ai envers les tâches planifiées de Windows est le retour d'état à l'utilisateur. Je suppose que la programmation des scripts PowerShell peut donner plus d'options ici? – Brettski

+0

Probablement ... Scheduler fonctionne avec une application arbitraire. Personnellement, j'ai mis en place une stratégie de sauvegarde sur un serveur qui exécute un fichier de commandes en temps réel qui exécute une simple application console C# avec quelques paramètres. –

1

La solution la plus simple serait d'envelopper votre xcopy commandes dans un fichier de commande et planifiez l'exécution à chaque fois que vous le souhaitez en tant que tâche planifiée sur votre serveur Web. Si vous voulez avoir envie, vous pouvez écrire une interface web pour le planificateur de tâches - Je suis sûr que j'ai vu des exemples de sources ouvertes de ce type d'application aussi.

1

Je pense que vous devriez envisager d'utiliser Windows Powershell pour faire votre copie (ou un autre langage de script si vous préférez), piloté par Windows Scheduled Tasks. Bien que vous puissiez écrire une application pour ce faire, je pense qu'il serait beaucoup plus facile d'avoir un script que d'autres pourraient éditer.

0

Vous avez étiqueté cet ASP mais si vous n'êtes pas difficile, je recommanderais une combinaison de tâches planifiées intégrées à Windows et de rsync. Si cela doit vraiment être automatisé à partir d'une page intranet (et que vous êtes dans IE) alors une forme d'ActiveX ou un script/application téléchargeable serait nécessaire pour configurer la planification.

Questions connexes