2010-06-18 10 views
1

J'essaye de convertir un programme de Linux pour l'utiliser sur Windows, et il appelle test -f, ou test -d sur Linux. J'en ai besoin pour faire la même chose sur Windows. Y at-il une commande intégrée, ou un autre programme que je peux utiliser pour faire la même chose?IsFile, IsDirectory Test Windows

Je programme en utilisant FreeBASIC (horrible, mais c'est ce que j'ai eu).

EDIT: Un programme externe est la meilleure option ici. J'ai regardé l'API, et ce n'est pas bon.

+0

Pourquoi est marqué 'batch'? Voulez-vous une solution de fichier batch ou une solution FreeBASIC? – Joey

+0

Oui, batch, comme 'test -f' sur linux. Juste modifié pour refléter cela. – bradlis7

+0

ajouter quelques informations rapides à ma réponse sur la façon dont vous pourriez être en mesure de trier votre propre outil (même si vous ne connaissez pas C++, vous pourriez être en mesure de découper la croûte de cet échantillon et ensuite poser d'autres questions ici problèmes restants). –

Répondre

2

Jamais entendu parler de FreeBasic avant mais en regardant à l'aide, il y a une commande DIR qui prend en charge l'utilisation fbDirectory comme l'un des motifs d'attributs pour filtrer.
Et en regardant un peu plus loin sur cette page, je viens de voir qu'ils ont un échantillon pour vérifier si les objets trouvés sont des fichiers ou des répertoires. Regardez simplement here, regardez le deuxième exemple sur cette page.

Je ne sais pas exactement ce que font ces commandes de test, mais si vous voulez tester si un objet spécifique est un répertoire, vous devriez pouvoir appeler Dir("exactname", fbDirectory, something) je pensais. Et puis vous pourriez tester un fichier en mettant un Pas dans quelque part (en supposant que FreeBasic supporte cela).

Éditer: Pour créer votre propre outil, here est un exemple qui montre une petite application C++ qui pourrait facilement être modifiée pour rechercher des répertoires ou non. Recherchez le FindFirstFile dans l'exemple et peu après il vérifie s'il est en lecture seule, ce qui peut être modifié pour FILE_ATTRIBUTE_DIRECTORY.

+0

Oui, ce serait bien si ça fonctionnait à 100%. J'ai lu quelque part que Dir() est bogué, ce qui n'est pas documenté. Je vais vous donner un coup de feu. – bradlis7

+0

@ bradlis7: Si les fonctionnalités du langage sont buggées, vous feriez mieux de suivre la suggestion d'Ed :). Cependant, si vous pouvez exécuter des exécutables externes et obtenir une valeur de retour, il serait facile d'écrire un petit exe en C++ ou quelque chose à chercher (vous pourriez probablement trouver un exemple de code pour cela facilement) et créer l'outil vous-même avec un compilateur C++ gratuit. –

+0

Eh bien, j'ai fini par utiliser Dir() et fbDirectory. Cela semble fonctionner. Je suis coincé avec freebasic, malheureusement ... – bradlis7

1

Vous n'êtes pas sûr de FreeBASIC, avez-vous regardé vbscript? Vous pouvez utiliser le FileSystemObject

Dim fso, msg 
Set fso = CreateObject("Scripting.FileSystemObject") 
If (fso.FolderExists(fldr)) Then 
    'Do Something here 
Else 
    'Do Something 
End If 
If (fso.FileExists(filespec)) Then 
    'Do Something here 
Else 
    'Do Something 
End If 
+0

Si je n'avais pas créé 2 000 lignes de code pour Linux, je serais prêt à le faire. Un programme externe fonctionnerait: 'exec (" isfile filename ")'. – bradlis7