Le fichier apparaît avec ls mais pas avec dir

0

Windows 7

J'ai réalisé un pdf en utilisant wkhtmltopdf dans C:/Program Files/wkhtmltopdf/binla commande wkhtmltopdf http://google.co.uk google.pdfpour le tester.

Cependant, google.pdfne s'affiche pas dans l'explorateur Windows et l'exécution le ls -lmontre, mais pas l'exécution dir... Pourquoi le fichier serait-il invisible de cette façon?

modifier

Running cat google.pdfimprime le pdf au terminal

J'ai également constaté que je pouvais copier le fichier dans un autre répertoire - avec exactement les mêmes problèmes que la copie du fichier dans son nouveau répertoire.

En regardant les autorisations de ls -l- personne n'a l'autorisation d'exécuter pour le fichier pdf. Je ne sais pas si c'est important cependant. Ce n'est pas important - d'autres pdf sur mon ordinateur ont le même ensemble d'autorisations.

Résultat attrib google.pdfdans C: / Program Files / wkhtmltopdf / bin

attrib google.pdf
File not found - google.pdf

Résultat ls -ldans C: / Program Files / wkhtmltopdf / bin

total 64957
-rw-r--r--  1 Admin  Administ   305109 Jul  1 14:59 bbc.pdf
-rw-r--r--  1 Admin  Administ    30426 Jul  1 15:28 google.pdf
-rwxr-xr-x  1 Admin  Administ   489773 Jun 17 10:54 libgcc_s_sjlj-1.dll
-rwxr-xr-x  1 Admin  Administ  6762827 Jun 17 10:54 libstdc++-6.dll
-rwxr-xr-x  1 Admin  Administ   243109 Jun 17 10:54 libwinpthread-1.dll
-rwxr-xr-x  1 Admin  Administ 41729536 Jun 17 10:54 wkhtmltoimage.exe
-rwxr-xr-x  1 Admin  Administ 41827328 Jun 17 10:53 wkhtmltopdf.exe
-rwxr-xr-x  1 Admin  Administ 41639424 Jun 17 10:52 wkhtmltox.dll
Kvothe
la source
Vous exécutez les deux ls et dir contre le même emplacement? Où le fichier est-il stocké? Sur un serveur de fichiers, ou le copiez-vous d'un ordinateur Linux vers Windows?
Adam Thompson
Le fichier est stocké dans C:/Program Files/wkhtmltopdf/binle même répertoire que celui où j’exécute ces commandes. Tout cela est dans ce dossier sur ma machine Windows (j'ai ls et d' autres commandes disponibles à partir de mon installation de Git pour Windows)
Kvothe
@AdamThompson Je viens de constater que personne ne dispose d'autorisations d'exécution sur le pdf (en cours d'exécution ls -l). Est-ce que cela pourrait être le problème?
Kvothe
C’est cygwin que vous utilisez sous Windows ou autre chose? À partir de l'invite de commande, pouvez-vous accéder au répertoire contenant le fichier, lancer Attrib google.pdf et publier les résultats ici, s'il vous plaît?
Adam Thompson
Pourriez-vous s'il vous plaît poster la sortie de ls -lde l'intérieurC:/Program Files/wkhtmltopdf/bin
Art Gertner

Réponses:

3

En supposant que les attributs soient définis correctement (c'est-à-dire que le fichier n'est pas défini en tant que "masqué" ou "système"), il s'agit probablement du résultat d'un programme non élevé qui tente d'écrire dans la structure % ProgramFiles% .

Lorsque des programmes non élevés tentent d'écrire dans cette structure de répertoires, ils finissent par écrire dans % LocalAppData% \ VirtualStore .
Par exemple, si l'application unelevated.exe tente d'écrire dans C: \ Program Files \ Unelevated \ fichier.txt , elle écrira en fait dans le fichier C: \ Utilisateurs \ Bob \ AppData \ Local \ VirtualStore \ Program Files \ Unelevated \. txt .

D'autres applications peuvent également se retrouver à l'emplacement VirtualStore, selon la manière dont elles ont été compilées .

Cela peut être corrigé ou non dans les versions ultérieures de MinGW .

Adam Thompson
la source
Merci! Vous m'avez évité un mal de tête majeur. Je suppose que vous ne savez pas si la même chose se produirait si wkhtmltopdf était installé sur un serveur Web? Merci une fois de plus!
Kvothe
Si le serveur Web exécute Windows Server 2008 ou une version ultérieure, le processus sera virtualisé. Si vous voulez dire que le serveur Web créerait le fichier et que le client le téléchargerait à l'aide d'un navigateur Web, cela fonctionnerait de la même manière que si le navigateur Web téléchargeait tout autre fichier de n'importe où. La meilleure chose à faire est de ne pas utiliser l'application pour écrire dans la structure% ProgramFiles%. Ecrivez le fichier dans votre dossier Documents ou configurez un autre dossier sur votre PC / serveur Web (par exemple, C: \ GeneratedPDFs) et écrivez les fichiers dans ce répertoire.
Adam Thompson
Excellent. Merci beaucoup pour votre aide avec ça!
Kvothe