Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/gwt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Batch file 从文件名中删除文本并创建单独的存档_Batch File_Rename_Archive - Fatal编程技术网

Batch file 从文件名中删除文本并创建单独的存档

Batch file 从文件名中删除文本并创建单独的存档,batch-file,rename,archive,Batch File,Rename,Archive,我有一个包含很多文件的目录,例如: 杰基尔博士和海德先生的奇怪案例——罗伯特·路易斯·史蒂文森。博士 审判-弗兰兹·卡夫卡.doc 悲惨世界-维克多·雨果,中国 恋爱中的女人-D.H.劳伦斯.莫比 被绑架-罗伯特·路易斯·史蒂文森中华人民共和国 房间-Emma Donoghue.pdf 请帮助我编写CMD命令,以重命名所有文件并输出如下内容: 杰基尔博士和海德先生的奇怪案例。博士 审判。doc 《悲惨世界》中华人民共和国 恋爱中的女人。H.劳伦斯.莫比 被绑架。中华人民共和国 Room.pdf

我有一个包含很多文件的目录,例如:

杰基尔博士和海德先生的奇怪案例——罗伯特·路易斯·史蒂文森。博士
审判-弗兰兹·卡夫卡.doc
悲惨世界-维克多·雨果,中国
恋爱中的女人-D.H.劳伦斯.莫比
被绑架-罗伯特·路易斯·史蒂文森中华人民共和国
房间-Emma Donoghue.pdf

请帮助我编写CMD命令,以重命名所有文件并输出如下内容:

杰基尔博士和海德先生的奇怪案例。博士
审判。doc
《悲惨世界》中华人民共和国
恋爱中的女人。H.劳伦斯.莫比
被绑架。中华人民共和国
Room.pdf

然后分别归档文件:

杰基尔博士和海德先生的奇怪案例。rar
审判。rar
悲惨世界报 恋爱中的女人。rar
被绑架。rar
房间号

p/s:我已经写了一个归档文件的命令,但它不起作用。哪里错了

对于/f“delims=“%%b in('dir.”/ad/b)do(
“c:\ProgramFiles\7-Zip\7z.exe”a-r-tzip“%%b.Zip”
)

@ECHO关闭
SETLOCAL enabledelayedexpansion
设置“sourcedir=U:\books”
设置“destdir=U:\destdir”
调用:makedummydata
对于/f“delims=“%%a IN('dir/b/a-d”%sourcedir%\*“)DO(
对于(“%%a”)中的/f“delims=-”%%b,请执行以下操作(
设置“book=%%b”
回显导出?ren?“%sourcedir%\%%a”“!book:~0,-1!%%~xa”
ECHO“c:\Program Files\7-Zip\7z.exe”a-r-tzip“%destdir%\!book:~0,-1!.Zip“%sourcedir%\!book:~0,-1!%%~xa”
ECHO“c:\Program Files\7-Zip\7z.exe”a-r-tzip“%destdir%\!book:~0,-1!.Zip“%sourcedir%\%%a”
)
)
后藤:EOF
:makedummydata
::
::此部分仅用于设置我的测试目录u:\books上指定的文件
::
MD“%sourcedir%”2>nul
对于%%b英寸(
“杰基尔博士和海德先生的奇怪案例——罗伯特·路易斯·史蒂文森博士”
“审判-弗兰兹·卡夫卡博士”
“悲惨世界-维克多·雨果,中国”
“恋爱中的女人——D·H·劳伦斯·莫比”
“被绑架-罗伯特·路易斯·史蒂文森,中华人民共和国”
“傲慢与偏见-简·奥斯汀,中国”
“房间-Emma Donoghue.pdf”
)做(
复制/y NUL“%sourcedir%\%%~b”>NUL
)
后藤:EOF
不确定您所说的导出是什么意思。也许吧

我已经演示了如何执行
7z
命令,但我不知道您是想先重命名文件还是一步完成。我假设每本书的标题都是
name-author.ext
,在
-
两侧各有一个空格

这些命令只是
echo
ed,因此您可以在执行之前进行验证

请注意,如果标题中有某些字符,这将无法正常工作-尤其是
,尽管
&
似乎很高兴-这就是我添加字符的原因

另一件需要担心的事情是使用
-
作为分隔符。如果标题包含
-
,或者作者的名字包含
-
,或者两者都包含,会发生什么情况


哦,不!可怕的“它不起作用”回答没有详细说明程序做了什么或没有做什么

这里是一个修订的批处理,包含了提供的额外细节。**注意,它在虚拟目录中创建了一组虚拟文件,然后重命名并归档它们**

@ECHO关闭
SETLOCAL enabledelayedexpansion
设置“sourcedir=U:\books”
设置“destdir=U:\destdir”
调用:makedummydata
回音之前。。。
目录%sourcedir%
目录%destdir%
对于/f“delims=“%%a IN('dir/b/a-d”%sourcedir%\*“)DO(
对于(“%%a”)中的/f“delims=-”%%b,请执行以下操作(
设置“book=%%b”
ren“%sourcedir%\%%a”!book:~0,-1!%%~xa
“c:\Program Files\7-Zip\7z.exe”a-r-tzip”%destdir%\!book:~0,-1!.Zip”%sourcedir%\!book:~0,-1!%%~xa”
)
)
在…之后回音。。。
目录%sourcedir%
目录%destdir%
后藤:EOF
:makedummydata
::
::此部分仅用于设置我的测试目录u:\books上指定的文件
::
MD“%sourcedir%”2>nul
MD“%destdir%”2>nul
REM DEL“%sourcedir%\*?*”2>nul
REM del“%destdir%\*?*”2>nul
对于%%b英寸(
“杰基尔博士和海德先生的奇怪案例——罗伯特·路易斯·史蒂文森博士”
“审判-弗兰兹·卡夫卡博士”
“悲惨世界-维克多·雨果,中国”
“恋爱中的女人——D·H·劳伦斯·莫比”
“被绑架-罗伯特·路易斯·史蒂文森,中华人民共和国”
“傲慢与偏见-简·奥斯汀,中国”
“房间-Emma Donoghue.pdf”
)做(
复制/y NUL“%sourcedir%\%%~b”>NUL
)
后藤:EOF
下面是我跑步的结果:

before...
 Volume in drive U has no label.
 Volume Serial Number is 02E6-1000

 Directory of U:\books

28/03/2014  11:40    <DIR>          .
28/03/2014  11:40    <DIR>          ..
28/03/2014  11:46                 0 The Strange Case of Dr Jekyll and Mr Hyde - Robert Louis Stevenson.doc
28/03/2014  11:46                 0 The Trial - Franz Kafka.doc
28/03/2014  11:46                 0 Les Miserables - Victor Hugo.prc
28/03/2014  11:46                 0 Women In Love - D. H. Lawrence.mobi
28/03/2014  11:46                 0 Kidnapped - Robert Louis Stevenson.prc
28/03/2014  11:46                 0 Pride & Prejudice - Jane Austen.prc
28/03/2014  11:46                 0 Room - Emma Donoghue.pdf
               7 File(s)              0 bytes
               2 Dir(s)   2,145,681,408 bytes free
 Volume in drive U has no label.
 Volume Serial Number is 02E6-1000

 Directory of U:\destdir

28/03/2014  11:40    <DIR>          .
28/03/2014  11:40    <DIR>          ..
               0 File(s)              0 bytes
               2 Dir(s)   2,145,681,408 bytes free

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive U:\destdir\The Strange Case of Dr Jekyll and Mr Hyde.zip

Compressing  The Strange Case of Dr Jekyll and Mr Hyde.doc

Everything is Ok

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive U:\destdir\The Trial.zip

Compressing  The Trial.doc

Everything is Ok

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive U:\destdir\Les Miserables.zip

Compressing  Les Miserables.prc

Everything is Ok

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive U:\destdir\Women In Love.zip

Compressing  Women In Love.mobi

Everything is Ok

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive U:\destdir\Kidnapped.zip

Compressing  Kidnapped.prc

Everything is Ok

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive U:\destdir\Pride & Prejudice.zip

Compressing  Pride & Prejudice.prc

Everything is Ok

7-Zip [64] 9.20  Copyright (c) 1999-2010 Igor Pavlov  2010-11-18
Scanning

Creating archive U:\destdir\Room.zip

Compressing  Room.pdf

Everything is Ok
after...
 Volume in drive U has no label.
 Volume Serial Number is 02E6-1000

 Directory of U:\books

28/03/2014  11:40    <DIR>          .
28/03/2014  11:40    <DIR>          ..
28/03/2014  11:46                 0 The Strange Case of Dr Jekyll and Mr Hyde.doc
28/03/2014  11:46                 0 The Trial.doc
28/03/2014  11:46                 0 Les Miserables.prc
28/03/2014  11:46                 0 Women In Love.mobi
28/03/2014  11:46                 0 Kidnapped.prc
28/03/2014  11:46                 0 Pride & Prejudice.prc
28/03/2014  11:46                 0 Room.pdf
               7 File(s)              0 bytes
               2 Dir(s)   2,145,452,032 bytes free
 Volume in drive U has no label.
 Volume Serial Number is 02E6-1000

 Directory of U:\destdir

28/03/2014  11:40    <DIR>          .
28/03/2014  11:40    <DIR>          ..
28/03/2014  11:46               224 The Strange Case of Dr Jekyll and Mr Hyde.zip
28/03/2014  11:46               160 The Trial.zip
28/03/2014  11:46               170 Les Miserables.zip
28/03/2014  11:46               170 Women In Love.zip
28/03/2014  11:46               160 Kidnapped.zip
28/03/2014  11:46               176 Pride & Prejudice.zip
28/03/2014  11:46               150 Room.zip
               7 File(s)          1,210 bytes
               2 Dir(s)   2,145,452,032 bytes free
在。。。
驱动器U中的卷没有标签。
卷序列号为02E6-1000
U:\books目录
28/03/2014  11:40              .
28/03/2014  11:40              ..
2014年3月28日11:46 0杰基尔博士和海德先生的奇怪案例-罗伯特·路易斯·史蒂文森.doc
2014年3月28日11:46 0审判-Franz Kafka.doc
2014年3月28日11:46 0悲惨世界-维克多·雨果中国
2014年3月28日11:46 0恋爱中的女人-D.H.劳伦斯·莫比
2014年3月28日11:46 0被绑架-Robert Louis Stevenson.prc
2014年3月28日11:46 0傲慢与偏见-简·奥斯汀中国
2014年3月28日11:46 0室-Emma Donoghue.pdf
7个文件0个字节
2个目录2145681408个可用字节
驱动器U中的卷没有标签。
卷序列号为02E6-1000
U:\destdir的目录
28/03/2014  11:40              .
28/03/2014  11:40              ..
0个文件0个字节
2个目录2145681408个可用字节
7-Zip[64]9.20版权所有(c)1999-2010伊戈尔·巴甫洛夫2010-11-18
扫描
创建存档U:\destdir\Jekyll博士和Hyde先生的奇怪案例
压缩杰基尔博士和海德先生的奇怪案例
一切都好
7-Zip[64]9.20版权所有(c)1999-2010伊戈尔·巴甫洛夫2010-11-18
扫描
正在创建存档U:\destdir\The Trial.zip
压缩Trial.doc文件
一切都好
7-Zip[64]9.20版权所有(c)1999-2010伊戈尔·巴甫洛夫2010-11-18
扫描
正在创建存档U:\destdir\Les Miserables.zip
中华人民共和国
一切都好
7-Zip[64]9.20版权所有(c)1999-2010伊戈尔·巴甫洛夫2010-11-18
扫描
正在创建存档U:\destd
@echo off
for %%a in (
"The Strange Case of Dr Jekyll and Mr Hyde - Robert Louis Stevenson.doc"
"The Trial - Franz Kafka.doc"
"Les Miserables - Victor Hugo.prc"
"Women In Love - D. H. Lawrence.mobi"
"Kidnapped - Robert Louis Stevenson.prc"
"Room - Emma Donoghue.pdf"
) do type nul>"%%a"

:: remove the above after testing


for /f "tokens=1,* delims=|" %%a in ('dir /b /a-d ^|find /v /i "%~nx0" ^|find /v /i "repl.bat" ^|repl "(.*?) - .*(\..*)$" "$&|$1$2" a') do (
ren "%%a" "%%b"
"C:\Program Files\7-Zip\7z.exe" a "%%~nb" "%%b"
del "%%b"
)
pause