A única maneira que eu sei para impedir que o 7z inclua os pathes é comprimir a pasta atual.
Parece haver uma falha ao usar a opção -o para definir a pasta de saída um nível acima (ela cria o 7z, no entanto, na pasta atual).
Uma solução é entrar em cada pasta para compactar e, em seguida, mover o arquivo 7z um nível acima:
:: Flat7z.cmd
@Echo off
for /d %%X in (*) do (
echo processing folder "%%~fX"
Pushd "%%~fX"
"c:\Program Files-Zipz.exe" a "%%~nxX.7z" *
Move "%%~nxX.7z" ..
PopD
)
Árvore de amostra A: \ antes
> tree A:\ /F
A:\
└───test
│ Flat7z.cmd
├───a
│ File1.txt
│ File2.txt
└───b
File3.txt
File4.txt
e depois de executar o lote:
> tree A:\ /F
A:\
└───test
│ a.7z
│ b.7z
│ Flat7z.cmd
├───a
│ File1.txt
│ File2.txt
└───b
File3.txt
File4.txt
E (encurtado) 7z l *.7z
output
Listing archive: a.7z
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2018-06-25 19:37:39 ....A 6 16 File1.txt
2018-06-25 19:37:43 ....A 6 File2.txt
------------------- ----- ------------ ------------ ------------------------
2018-06-25 19:37:43 12 16 2 files
Listing archive: b.7z
Date Time Attr Size Compressed Name
------------------- ----- ------------ ------------ ------------------------
2018-06-25 19:37:39 ....A 6 16 File3.txt
2018-06-25 19:37:43 ....A 6 File4.txt
------------------- ----- ------------ ------------ ------------------------
2018-06-25 19:37:43 12 16 2 files
------------------- ----- ------------ ------------ ------------------------
2018-06-25 19:37:43 24 32 4 files
Archives: 2
Volumes: 2
Total archives size: 358