varios todos renombrar para otro mover manipulaciĆ³n manejo los directorios directorio crear copiar comandos comando archivos archivo if-statement batch-file directory copy errorlevel

if-statement - todos - mover varios archivos en linux



archivo por lotes para verificar la existencia del directorio si no existe, luego use un directorio alternativo para copiar archivos (1)

Puede utilizar la variable de entorno %ALLUSERSPROFILE% .

En WinXP, el valor predeterminado es C: / Documents and Settings / All Users

En Win7 / 2008 el valor predeterminado es C: / ProgramData

Hay una tabla disponible aquí: http://ss64.com/nt/syntax-variables.html

Veo que también copias un archivo diferente. No estoy seguro de por qué haces eso. Tal vez podría detectar el uso de un método aquí: https://stackoverflow.com/a/2788764/1553090 - De lo contrario, tal vez debería aprovechar las variables %ProgramFiles% y %ProgramFiles(x86)% .

Solo para explicar cómo puede elegir utilizar estas variables ... Puede probar la existencia de la carpeta de inicio de Win7, y si no está allí, simplemente recurra al XP (independientemente de si existe).

set STARTUP_WIN7=%ALLUSERSPROFILE%/Microsoft/Windows/Start Menu/Programs/Startup set STARTUP_WINXP=%ALLUSERSPROFILE%/Start Menu/Programs/Startup if EXIST "%STARTUP_WIN7%" ( set STARTUP=%STARTUP_WIN7% ) else ( set STARTUP=%STARTUP_WINXP% )

Intento escribir un archivo por lotes que copie un archivo exe desde una ubicación de red a una ubicación local. Actualmente funciona, pero dependiendo de la versión de Windows (xp o win7) el usuario tiene que seleccionar el archivo .bat correcto debido a las diferentes rutas locales necesarias para la copia. (van a la carpeta de inicio para que se ejecute cada vez que el usuario inicie la máquina). Esta es la primera vez que trabajo con la escritura de archivos por lotes y estoy completamente perdido al mirar la sintaxis de las declaraciones if. Si pudiera obtener ayuda para entender esto, sería genial.

Esto es lo que tengo actualmente que funciona para XP:

REM @ECHO OFF ECHO STARTING MOVEFILES SET EXITRC=0 SET EXITMSG=EXITRC INITIALIZED ECHO %EXITRC% -- %EXITMS COPY "//networkDrive/install/Individual/program/MOVEFILES.EXE" "C:/DOCUMENTS AND SETTINGS/ALL USERS/START MENU/PROGRAMS/STARTUP/" ECHO COPIED FILES TO YOUR PC SET EXITRC=%ERRORLEVEL% IF NOT %EXITRC% == 0 GOTO :EXIT SET EXITMSG=PROCESSING COMPLETE :EXIT ECHO STEP: %EXITMSG% RC: %EXITRC% ECHO FINISHING MOVEFILES PAUSE EXIT %EXITRC%

Esto es lo que tengo para Windows 7:

@ECHO OFF ECHO STARTING MOVEFILESWIN7 SET EXITRC=0 SET EXITMSG=EXITRC INITIALIZED ECHO %EXITRC% -- %EXITMS COPY "//networkDrive/install/Individual/program/MOVEFILES.exe" "C:/ProgramData/Microsoft/Windows/Start Menu/Programs/Startup" ECHO COPIED MOVEFILESWIN7 TO YOUR PC - All Users / Public Startup folder SET EXITRC=%ERRORLEVEL% IF NOT %EXITRC% == 0 GOTO :EXIT SET EXITMSG=PROCESSING COMPLETE :EXIT ECHO STEP: %EXITMSG% RC: %EXITRC% ECHO FINISHING MOVEFILESWIN7 PAUSE EXIT %EXITRC%

Me gustaría tener solo un archivo de proceso por lotes que cubra ambos escenarios para que no haya confusión para el usuario sobre qué archivo por lotes ejecutar.