Directorios con mas de 255 caracteres

Cuando una ruta excede los 255 caracteres, no se puede borrar por limitación del sistema de archivos (permite crear, pero no eliminar). Como no encontré una herramienta, se me ocurrió lo siguiente:

dado 2 carpetas:
d:\carpetaMala
d:\carpetaVacia

robocopy /ZB /MIR d:\carpetaVacia d:\carpetaMala

con esto hacemos un "espejo" de la carpeta Vacia contra la Carpeta con datos erroneos. De ésta manera se eliminan todos los archivos y carpetas (incluyendo los inválidos).

Conexión a Escritorio Remoto

Muy buenas, amigos!

{Antes que nada quiero hacerles la aclaración de que ésto del escritorio remoto funciona sólo si en la red donde se encuentra la PC remota o la red donde estamos nosotros tenemos corriendo un SO servidor (Windows 2000 server o 2003 server, ambos en todas sus versiones), ya que es necesario que el mismo nos brinde el servicio de "Terminal Server". De lo contrario les recomiendo utilizar aplicaciones como: RAdmin o VNC, donde nosotros seremos "los clientes" y la máquina remota "el servidor"}

Acá les resumo la forma de conectarse a través del protocolo RDP (remote desktop protocol) a una máquina donde quiera que se encuentre en el planeta :-)
Lo primero es instalar en la PC remota, a la cual ustedes quieren ingresar, una aplicación que les irá actualizando la dirección IP asociada a un nombre de dominio, al final les explico de qué estamos hablando.
Para eso debemos ingresar en www.no-ip.com y registrarnos como usuario nuevo, en "Sign-up now!". Cuando ya hemos validado nuestra credencial de nuevo usuario podemos entonces crear el/los dominio/s para asociar.
Ingresamos a www.no-ip.com con nuestra credencial recién creada y vamos al apartado "Hosts / Redirects / Add", ahí debemos completar en el casillero "Hostname" el nombre que antecederá al dominio, por ejemplo: mipcremota, donde luego elegiremos el dominio: .no-ip.biz, .no-ip.org, .no-ip.info, etc. Por lo demás no hay que tocar ninguna otra opción.
Muy bien, ahora que hemos creado el dominio tenemos que descargar, según el SO que usemos, la aplicación que actualizará la IP y la asociará al dominio creado. Vamos a la pestaña "Downloads" www.no-ip.com/downloads.php?sid=5fc067745b7c1a5d1bbf52e9b81eb5a0 y bajamos entonces la aplicación para luego instalarla en la PC remota. Al iniciar la aplicación recién instalada se les pedirá que se autentiquen con la credencial de No-IP, luego se les mostrará un cuadro donde se listan todos los nombres de dominio que crearon, junto a un casillero a tildar a la izquierda de c/u. Ustedes deberán marcar el que corresponde al dominio que asociarán a dicha PC. Ésta aplicación, luego de instalada, nos ofrece ciertas opciones que podrán elegir, cada una les muestra una breve explicación al poner el puntero del mouse encima, les recomiendo activar el programa con la tercera opción, la que lo inicia como servicio del sistema y no les deja ícono en la bandeja, para evitar que los usuarios que se encuentran localmente en el equipo se den cuenta ;-)
El protocolo de Escritorio Remoto trabaja con el puerto "3389", ésto es importante saberlo porque posiblemente el firewall de nuestro SO o del antivirus lo bloquée, entonces hay que configurar la regla para abrirlo y permitir que por dicho puerto se acepten peticiones redirigidas hacia él. La creación de una nueva regla merece otro capítulo, en un futuro próximo les explicaré cómo crear reglas.
Además, al conocer la identificación del puerto, podemos habilitar la redirección de los paquetes entrantes a nuestro router hacia el puerto 3389 apuntándolo a la IP de la PC remota (ésto es obligatorio en todos los casos en que la PC remota se encuentre dentro de una LAN -Local Area Network ó Red de Área Local-). Merece otro capítulo ésta tarea, pero si no se encuentra en un grupo de trabajo (o LAN), ésta última configuración no es necesaria.
Suponiendo que ya se hizo todo como se indicó procederemos a abrir una consola para enviar un ping al dominio creado, por ejemplo: C:\ping mipcremota.no-ip.org
Si la configuración que hicimos está bien recibiremos respuesta indicándonos la IP actual del equipo (si el mismo está dentro de una LAN dicha IP será la de la red, pero eso no nos importa porque, al haber configurado el router apuntando el puerto 3389 hacia la IP del equipo remoto, nada nos afectará que el mismo tenga una IP privada y distinta de la IP de red). No intenten conectarse remotamente a un equipo si se encuentran en otro que está en la misma LAN utilizando el nombre de dominio creado porque no lograrán hacer conexión, para ello usen la IP privada o nombre de la PC.
Ahora sí, vayan a un cyber y ejecuten "Conexión a Escritorio Remoto", escriban el dominio creado, Enter y .......Vualá....!!!!! Ya podrán tener la pantalla de "login" del equipo remoto; les sugiero crear un usuario con permisos limitados y otro con privilegios de administrador, ambos con contraseña, para que protejan el acceso.
En lo que respecta a la instalación de la aplicación de No-IP, ésta es para que automáticamente actualice y asocie una nueva IP que nos otorgue nuestro proveedor de servicio de Internet (ISP), ya que lo más probable es que tengamos contratado un servicio con IP dinámica que irá cambiando día a día. En caso de tener contratada una IP fija, que es otro precio..., la instalación de ésta aplicación no es necesaria. Por una cuestión de memoria es más fácil recordar un nombre que una serie de números, es por eso que al crear un dominio no tendremos que preocuparnos por averiguar de una u otra forma la IP que le toca al equipo o red en el momento que queremos conectarnos, para eso está la aplicación de No-IP.

Bueno, eso es todo por el momento. Gracias a los amigos que leyeron éste artículo y lo consideraron útil.
Saludos.
Carlos (B. A.)

script para agregar un pc a un dominio

Lo hice en vbscript porque los clientes no tienen powershell.

'**************************************************
' Agregar PC al Dominio.
' Autor: Jorge Mestre
' Fecha: 26/06/08
' Descripción: Agrega un PC al dominio.
'
'**************************************************

'objeto para obtener el nombre de usuario actual
set net = WScript.CreateObject("WSCript.Network")
'objeto para los inputbox
Set WSHShell = WScript.CreateObject("WScript.Shell")

'Definiciones por defecto
pcDef = "testprep"
domDef = "lab.dominio.local"
OUDef = "OU=PCs"
userDef = Net.UserName
userLocalDef = "Administrator"

'inputbox PC
pc = InputBox("introduzca el HOSTNAME del PC", _
"Introducir hostname del PC",pcDef)

'saliendo por no poner ningún hostname
If pc = "..." or pc = "" Then
WScript.Echo "no se indicó ningún hostname, saliendo..."
WScript.Quit()
End If

'check pc
wscript.echo "PC: " & pc

'revisando que se llega al PC
If Ping(pc) = False then
wscript.Echo pc & " no responde a PING..."
Wscript.Quit()
end If

'inputbox Dominio
dominio = InputBox("introduzca el DOMINIO (formato DNS) " & _
"al que debe pertenecer " & pc, _
"Introducir dominio para " & pc,domDef)

'saliendo por no poner dominio
If dominio = "..." or dominio = "" Then
WScript.Echo "no se indicó ningún dominio, saliendo..."
WScript.Quit()
End If

'comprobar que se introdujeron "." con el nombre de dominio
If Instr(dominio, ".") = 0 Then
wscript.echo "el dominio debe estar indicado como " & _
"subdominio.dominio - Ejemplo: es.prueba.com"
wscript.Quit()
End If

'check dominio
wscript.echo "Dominio: " & dominio


' Introducir OU
ou = InputBox("introduzca la OU: Ej: OU=Workstations," & _
"OU=Standard","Introducir OU",OUDef)

'pedir usuario dominio / por defecto, poner el nombre
'de usuario actual en el inputbox
user = InputBox("introduzca un usuario con permisos para " & _
"agregar " & pc & " al dominio " & dominio, _
"Introducir usuario de DOMINIO",userDef)

'pedir password
msg=MsgBox("introducir el password en la consola luego de " &_
"este mensaje",0,"password en consola")
Set objPassword = CreateObject("ScriptPW.Password")
WScript.StdOut.Write "Contraseña para " & user & " (DOMINIO):"
pass = objPassword.GetPassword()

'pedir admin local pc
userLocal = InputBox("introduzca un usuario con permisos " & _
"LOCALES en " & pc & " (por ejemplo el " & _
"administrador local ","Introducir usuario LOCAL" _
,userLocalDef)

'pedir password usuario local
msg=MsgBox("introducir el password para el usuario LOCAL " & _
"de " & pc & " en la consola luego de este " & _
"mensaje",0,"password en consola de usuario LOCAL")

Set objPassword = CreateObject("ScriptPW.Password")
WScript.StdOut.Write VbCrLf & "Contraseña para " & _
userLocal & " (LOCAL):"
passLocal = objPassword.GetPassword()

' confirmar datos
confirmar=MsgBox("¿Son los siguientes datos correctos?" & _
VbCrLf & VbCrLf & "PC: " & pc & VbCrLf & _
"Dominio: " & dominio & " (" & ou & ")" & VbCrLf & _
"Usuario Dominio: " & user & VbCrLf & _
"Usuario Local: " & userLocal & VbCrLf _
,1,"Confirmar datos")

if confirmar = 2 then
msg=MsgBox("proceso cancelado",0,"Cancelado")
wscript.quit()
end if

reiniciar = MsgBox("¿Desea reiniciar " & pc & _
" luego de agregarlo a dominio?" & VbCrLf & _
VbCrLf & "(Es Necesario, " & _
"pero quizas es conveniente mas tarde)",4, _
"¿Reiniciar?")

Set objShell = CreateObject("WScript.Shell")
if reiniciar = 1 then
strCmdNetDom = "%comspec% /c netdom join " & pc & _
" /Domain:" & dominio & _
" /userD:" & user & _
" /passwordD:" & pass & _
" /OU:" & ou & _
" /userO:" & userLocal & _
" /PasswordO:" & passLocal & _
" /reboot"
else
strCmdNetDom = "%comspec% /c netdom join " & pc & _
" /Domain:" & dominio & _
" /userD:" & user & _
" /passwordD:" & pass & _
" /OU:" & ou & _
" /userO:" & userLocal & _
" /PasswordO:" & passLocal
End if

Set objExecObj = objShell.Exec(strCmdNetDom)
strResNetDom = objExecObj.StdOut.ReadAll()

resultado = MsgBox ("Resultado" & vbcrlf & strResNetDom)

' Función para hacer Ping
Function Ping(pc)
Set objShell = CreateObject("WScript.Shell")
strCmdPing = "%comspec% /c ping -n 1 " & pc & ""
Set objExecObj = objShell.Exec(strCmdPing)
strResPing = objExecObj.StdOut.ReadAll()

If Instr(strResPing, "Respuesta") > 0 Then
Ping = True
Else
Ping = False
End If
End Function