Tengo un archivo de texto con los siguientes valores
datasource=c:\temp\datasource
Lo que luego intento leer de un archivo por lotes y llenar un bucle for.
for /f "tokens=1,2 delims==" %%b in (config.txt) do (
if %%b==datasource set datasource=%%c
)
for %%a in (%datasource%\*.*) do if "%%~xa" == "" "C:\Program Files\7-Zip\7za.exe" a -tzip -mx9 "%%a.zip" "%%a"
El error que obtengo es
System error:
Incorrect function.
Press any key to continue . . .
Ahora si lo reemplazo %datasource%\*.*con c:\temp\datasource\*.*eso funciona bien.
¿Qué estoy haciendo mal?
EDITAR0
Los resultados de eliminar @echo off
REM @echo off
setlocal enabledelayedexpansion
for /F "tokens=1,2 delims==" %b in (config.txt) do (
if %b == datasource set datasource =%c
)
D:\sftp\winscp438>(
if datasource == datasource set datasource=c:\temp\datasource
)
for %a in (c:\temp\datasource\*.*) do if "%~xa
" == "" "C:\Program Files\7-Zip\7za.exe" a -tzip -mx9 "%a.zip" "%a"
if "" == "" "C:\Program Files\7-Zip\7za.exe" a -tzip -mx9 "c:\temp\datasource\sample.zip" "c:\temp\datasource"
7-Zip (A) 9.20 Copyright (c) 1999-2010 Igor Pavlov 2010-11-18
Error: c:\temp\datasource\sample.zip is not supported archive
System error:
Incorrect function.
windows
batch-file
CacahuetesMonkey
fuente
fuente

set datasource=c:\temp\datasource?@echo offen tu archivo por lotes? Sáquelo (coméntelo) y vea (y cuéntenos) lo que le dice.Respuestas:
7Zip devuelve el error que está viendo cuando el archivo especificado no es válido. Esto puede significar que está especificando el tipo de archivo incorrecto, el archivo de destino es un archivo corrupto o no es un archivo (efectivamente lo mismo que ser un archivo corrupto).
Sospecho que lo que sucedió fue que mientras elaboraba su archivo por lotes, inicialmente había omitido el
-tzipinterruptor y, por lo tanto, creó.7zarchivos con.zipextensiones. Por lo tanto, cuando posteriormente agregó el interruptor, 7Zip los mira y ve los archivos 7Zip, pero está especificando zip, por lo que arroja el error.Intente volver a configurar las cosas como estaban arriba, luego elimine
c:\temp\datasource\*.zipy vuelva a ejecutar el archivo por lotes.Además, suponiendo que los nombres de su directorio sean sustitutos, debe ajustar sus variables entre comillas para evitar problemas con los espacios:
fuente
c:\temp\datasource\*.zip".=" carácter, yadatasource=c:\temp\my=dataque no se analizará correctamente.intente usar el comando set
Establecer la descripción del comando
fuente
La única forma en que pude hacerlo funcionar fue mover la ruta
c:\temp\datasource\*.*al archivo config.txt para que el único parámetro dentro del paréntesis fuera%datasource%. No estoy seguro de si esto es normal.fuente