Erro "Nenhuma instância (s) disponível" com o comando wmic

5

Estou recebendo um erro "Nenhuma instância (s) disponível" com o comando wmic. O comando que estou executando (de uma janela elevada / administrador cmd.exe) é:

G:\>wmic datafile where name="file.txt" get creationdate
No Instance(s) Available

O arquivo "file.txt" existe.

Encontrei alguma menção a esse problema em outras perguntas / respostas da SU, como a resposta aqui:

Comando do Windows para obter todas as informações / propriedades de um arquivo

mas não encontrei nenhuma menção de como corrigir (ou até solucionar) esse problema.

Estou executando o Windows 7 Home Premium x64.


Quando executo "wmic datafile /?" Recebo ajuda de sintaxe de uso:

G:\>wmic datafile /?

DATAFILE - DataFile Management.

HINT: BNF for Alias usage.
(<alias> [WMIObject] | <alias> [<path where>] | [<alias>] <path where>) [<verb clause>].

USAGE:

DATAFILE ASSOC [<format specifier>]
DATAFILE CALL <method name> [<actual param list>]
DATAFILE CREATE <assign list>
DATAFILE DELETE
DATAFILE GET [<property list>] [<get switches>]
DATAFILE LIST [<list format>] [<list switches>]
Kevin Fegan
fonte
Qual é a saída em wmic datafile /? Does este se aplicar ao seu arquivo descrito?
Ramhound
@ Ramhound - Esse artigo fala sobre "Windows Server 2008 R2 configurado com cluster de failover". Estou executando o Windows 7 Home Premium x64, portanto, embora seja a mesma mensagem de erro, acho que não se aplica a mim. O arquivo está em uma partição no disco rígido da minha área de trabalho. Isso acontece com qualquer arquivo que eu tentei, até algo comoC:\Windows\system32\notepad.exe"
Kevin Fegan
@KevinFegan msdn.microsoft.com/en-us/library/aa394054.aspx : Você pode usar literais de seqüência de caracteres, como "NTFS", em uma cláusula WHERE. Se você deseja incluir os seguintes caracteres especiais em sua sequência, primeiro escape do caractere prefixando-o com uma barra invertida (\): barra invertida (\\) aspas duplas (\ ") aspas simples (\ ')
DavidPostill
@KevinFegan Veja minha resposta. Você precisa escapar de uma única barra invertida \ e, em vez disso, usar \\ (além de usar unidade e caminho)
DavidPostill
@KevinFegan Consulte technet.microsoft.com/en-us/library/cc758713%28v=ws.10%29.aspx para obter alguns exemplos ...
DavidPostill

Respostas:

5

Estou recebendo um erro "Nenhuma instância (s) disponível" com o seguinte comando wmic.

G:\>wmic datafile where name="file.txt" get creationdate

Você precisa fornecer o nome completo (incluindo a unidade e o caminho) do arquivo.

Exemplo:

F:\test>wmic datafile where name="C:\\Windows\\system32\\notepad.exe" get CreationDate
CreationDate
20090714005636.838522+060

Observe o uso de \\para escapar de um único \na cadeia de nomes de exemplo acima.


Se você deseja incluir os seguintes caracteres especiais em sua sequência, você deve primeiro escapar do caractere prefixando-o com uma barra invertida (\):

  • barra invertida (\\)
  • aspas duplas (\")
  • aspas simples (\ ')

Cláusula WHERE de Origem


Quais são as palavras-chave válidas (nome, caminho, ...) para a cláusula where com arquivo de dados?

Você pode obter a lista de propriedades na linha de comando usando:

wmic datafile get /?

Qualquer um dos nomes de propriedade pode ser usado em uma cláusula where.

F:\test>wmic datafile get /?

Property get operations.
USAGE:

GET [<property list>] [<get switches>]
NOTE: <property list> ::= <property name> | <property name>,  <property list>

The following properties are available:
Property                                Type                    Operation
========                                ====                    =========
Access Rights                           N/A                     N/A
Caption                                 N/A                     N/A
Class Name                              N/A                     N/A
Compressed                              N/A                     N/A
Compression Method                      N/A                     N/A
Computer System Class Name              N/A                     N/A
Computer System Name                    N/A                     N/A
Creation Date                           N/A                     N/A
Current File Open Count                 N/A                     N/A
Description                             N/A                     N/A
Drive                                   N/A                     N/A
Eight Dot Three File Name               N/A                     N/A
Encrypted                               N/A                     N/A
Encryption Method                       N/A                     N/A
File Extension                          N/A                     N/A
File Name                               N/A                     N/A
File System Class Name                  N/A                     N/A
File System Name                        N/A                     N/A
File Type                               N/A                     N/A
Hidden                                  N/A                     N/A
Install Date                            N/A                     N/A
Last Accessed                           N/A                     N/A
Last Modified                           N/A                     N/A
Manufacturer                            N/A                     N/A
Name                                    N/A                     N/A
Path                                    N/A                     N/A
Readable                                N/A                     N/A
Should Be Archived                      N/A                     N/A
Size                                    N/A                     N/A
Status                                  N/A                     N/A
System File                             N/A                     N/A
Version                                 N/A                     N/A
Writeable                               N/A                     N/A

Leitura adicional

DavidPostill
fonte
Isso é mais ou menos onde meu pensamento estava indo com meu link
Ramhound
Eu tentei wmic datafile where name="C:\\Windows\\system32\\notepad.exe" get CreationDate(e até wmic datafile where name="C:notepad.exe" get CreationDate) e bem ... eles funcionam! (você sabia que eles iriam). Tenho certeza de que tentei isso antes quando estava falhando, mas provavelmente havia algo mais errado com a sintaxe de comando na época. Obrigado pela ajuda. Você tem um link para informações sobre palavras-chave válidas (nome, caminho, ...) para a cláusula WHERE com DATAFILE?
precisa saber é o seguinte
@KevinFegan Nenhum link, mas você pode obter a lista de propriedades na linha de comando usando wmic datafile get /?. Qualquer nome de propriedade pode ser usado em uma wherecláusula como eu a entendo.
DavidPostill
...wmic datafile get /? foi isso. Obrigado novamente. Eu estava tentando wmic datafile where /?, o que não retorna nada muito útil.
precisa saber é o seguinte