¿Cuenta el número de caracteres en una ruta de archivo completa?

¿Cuenta el número de caracteres en una ruta de archivo completa?

Necesito poder contar la cantidad de caracteres en una ruta completa a un archivo en Windows. La forma en que actualmente estoy realizando esta tarea es la siguiente:

  1. Abrir un símbolo del sistema
  2. cd al directorio en cuestión (por ejemplo c:\CruiseControl\ProjectArtifacts\ProjectName)
  3. escribe el siguiente comando directorio /s /b > salida.csv
  4. Abra el archivo resultante.csv en Excel.
  5. utilizar el=LARGO()Función en Excel para contar el número de caracteres por fila que se enumeran en el archivo Output.csv.

¿Alguien conoce una extensión del shell del explorador o alguna herramienta de terceros que pueda realizar esta función sin que yo tenga que manipular la salida del directorio en Excel? ¿Existe alguna forma más sencilla de hacer esto? La raíz del problema que tengo es el límite de ruta de archivo de ~260 caracteres en Windows. Estoy tratando de analizar qué rutas tienen aproximadamente ~260 caracteres para poder acortarlas y evitar este error.

Respuesta1

Este tipo de cosas es muy fácil de hacer conCarcasa Hamilton C. Si esto es algo único, estarás contento con elversión gratuita. A continuación se muestra un ejemplo que genera las rutas completas de varios archivos en el c:\Windowsdirectorio y luego calcula las longitudes de las cadenas. Divulgación completa: soy el 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%

Respuesta2

Quizás estos sencillos archivos por lotes le resulten útiles.

1) Contando el número de caracteres en el directorio actual:

@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.

cdal director. y simplemente llame al archivo por lotes.

2) Contando el número de caracteres en el directorio 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.

Llame al archivo por lotes y pásele la ruta completa como argumento (asegúrese de usar comillas si la ruta contiene espacios). Tenga en cuenta que no se realiza ninguna comprobación de errores, por lo que omitir las comillas cuando la ruta contiene espacios dará un recuento incorrecto (bajo), y agregar barras invertidas adicionales al final aumentará el recuento.

Respuesta3

Esta no es una respuesta a su pregunta, pero aborda su problema. Tipo

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

En mi ilustración anterior, escribí 255 puntos; esto hará lo dir /s /bque ya conoce y mostrará solo las líneas (nombres de ruta de archivo) que tengan al menos 255 caracteres de longitud. Ajusta el número de periodos a tu gusto. Naturalmente, puede redirigir el resultado de lo anterior a un archivo para imprimir u otro análisis.

información relacionada