Contar o número de caracteres em um caminho de arquivo completo?

0

Eu preciso contar o número de caracteres em um caminho completo para um arquivo no Windows. Como estou realizando essa tarefa no momento, é o seguinte:

  1. Abra um prompt de comando
  2. cd para o diretório em questão (por exemplo, c: \ CruiseControl \ ProjectArtifacts \ ProjectName)
  3. digite o seguinte comando dir / s / b > output.csv
  4. Abra o arquivo output.csv resultante no Excel.
  5. use a função = LEN () no excel para contar o número de caracteres por linha conforme listado no arquivo output.csv.

Alguém sabe de uma extensão do shell explorer, ou alguma ferramenta de terceiros que poderia pré-forma esta função sem eu ter que manipular a saída do dir no excel? Existe alguma maneira mais fácil de fazer isso? A raiz do problema que estou tendo é o limite de caminho de arquivo de 260 caracteres no Windows. Eu estou tentando analisar quais caminhos são aproximadamente ~ 260 caracteres para que eu possa encurtá-los para evitar esse erro.

    
por Richie086 08.11.2012 / 22:37

3 respostas

1

Esse tipo de coisa é muito fácil de fazer com shell Hamilton C . Se isso acontecer uma vez, você ficará satisfeito com a versão gratuita . Aqui está um exemplo gerando os caminhos completos de vários arquivos no diretório c:\Windows e, em seguida, calculando os comprimentos de string. Divulgação completa: sou o autor.

128 C% cd
c:\Windows
129 C% ls mi*
Microsoft.NET      Minidump           mib.bin
130 C% foreach i ( mi* )
131 C? @ f = fullpath ( i )
132 C? echo $i $f $strlen(f)
133 C? end
mib.bin c:\Windows\mib.bin 18
Microsoft.NET c:\Windows\Microsoft.NET 24
Minidump c:\Windows\Minidump 19
134 C%
    
por 09.11.2012 / 00:37
1

Talvez esses arquivos em lote simples sejam úteis.

1) Contando o número de caracteres no diretório atual:

@echo off
echo %cd%>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=2
echo Path length = %len% chars.

cd para o diretório. e basta ligar para o arquivo de lote.

2) Contando o número de caracteres no diretório especificado:

@echo off
echo %1>"%TMP%\Temp.txt"
for %%l in ("%TMP%\Temp.txt") do set /a len=%%~zl
del "%TMP%\Temp.txt"
set /a len-=4
echo Path length = %len% chars.

Chame o arquivo em lote e passe o caminho completo como um argumento para ele (certifique-se de usar aspas se o caminho contiver espaços). Observe que nenhuma verificação de erro é feita, portanto, deixar de fora aspas quando o caminho contiver espaços dará uma contagem incorreta (baixa) e adicionar barras invertidas extras no final aumentará a contagem.

    
por 08.11.2012 / 23:49
0

Esta não é uma resposta à sua pergunta, mas trata do seu problema. Digite

dir /s /b | findstr -r ...............................................................................................................................................................................................................................................................

Na ilustração acima, digitei 255 períodos; Isso fará com que o dir /s /b , que você já conhece, mostre apenas as linhas (nomes de arquivos) com pelo menos 255 caracteres. Ajuste o número de períodos ao seu gosto. Naturalmente, você pode redirecionar a saída dos itens acima para um arquivo para impressão ou outra análise.

    
por 08.11.2012 / 23:04