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

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

Preciso contar o número de caracteres em um caminho completo para um arquivo no Windows. A forma como estou realizando essa tarefa atualmente é a 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 > saída.csv
  4. Abra o arquivo output.csv resultante no Excel.
  5. use o=NUM()função no Excel para contar o número de caracteres por linha conforme listado no arquivo output.csv.

Alguém conhece uma extensão do shell do explorer ou alguma ferramenta de terceiros que possa pré-formar essa função sem que eu precise 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 aproximadamente 260 caracteres no Windows. Estou tentando analisar quais caminhos têm aproximadamente 260 caracteres para poder encurtá-los e evitar esse erro.

Responder1

Esse tipo de coisa é muito fácil de fazerConcha Hamilton C. Se for uma coisa única, você ficará feliz com oversão gratuita. Aqui está um exemplo gerando os caminhos completos de vários arquivos no c:\Windowsdiretório e, em seguida, calculando os comprimentos das strings. Divulgação completa: eu 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%

Responder2

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.

cdpara o diretório. e apenas chame o arquivo em 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 argumento (certifique-se de usar aspas se o caminho contiver espaços). Observe que nenhuma verificação de erros é feita, portanto, deixar aspas de fora quando o caminho contém espaços resultará em uma contagem incorreta (baixa), e adicionar barras invertidas extras no final aumentará a contagem.

Responder3

Esta não é uma resposta à sua pergunta, mas resolve o seu problema. Tipo

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

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

informação relacionada