我刚刚加入了一个没有CI流程的团队(甚至没有过夜构建)和一些粗略的开发实践.有改变这一点的愿望,所以我现在的任务是创建一个过夜构建.我已经跟着这一系列文章:创建一个包含我们所有项目的主解决方案(一些Web应用程序,一个Web服务,一些Windows服务,以及编译成命令行可执行文件的几个关闭工具); 创建了一个MSBuild脚本来自动构建,打包和部署我们的产品; 并创建了一个.cmd文件,只需单击一下即可完成.这是我现在要完成的一项任务,作为所有这一切的一部分:
该团队目前的做法是将web.config和app.config文件保留在源代码控制之外,并放入名为web.template.config和app.template.config的源代码控制文件中.目的是开发人员将.template.config文件复制到.config以获取所有标准配置值,然后能够将.config文件中的值编辑为本地开发/测试所需的任何值.出于显而易见的原因,我想自动将.template.config文件重命名为.config.最好的方法是什么?
是否可以在构建脚本本身中执行此操作,而无需在脚本中规定需要重命名的每个单独文件(在将新项目添加到解决方案时需要对脚本进行维护)?或者我可能要写一些我只是从脚本运行的批处理文件?
此外,是否有一个更好的开发解决方案,我可以建议,这将使整个过程不必要?
我在文件夹中有一些文件,并希望使用Windows中的批处理脚本将所有文件名的第一个字母大写为特定扩展名.
示例上限*.m
之前:
后:
我有以下脚本,当我得到一堆需要重命名为包含它们的目录名的文件时,我通常会使用它.
现在的问题是我需要将文件重命名为两个级别的目录.如何获取祖父目录以使其工作?
有了以下我得到的错误就像这个例子:"mv:无法移动./48711/zoom/zoom.jpg到./48711/zoom/./48711/zoom.jpg:没有这样的文件或目录".这是在CentOS 5.6上运行的.
我希望最终文件命名为:48711.jpg
#!/bin/bash
function dirnametofilename() {
for f in $*; do
bn=$(basename "$f")
ext="${bn##*.}"
filepath=$(dirname "$f")
dirname=$(basename "$filepath")
mv "$f" "$filepath/$dirname.$ext"
done
}
export -f dirnametofilename
find . -name "*.jpg" -exec bash -c 'dirnametofilename "{}"' \;
find .
Run Code Online (Sandbox Code Playgroud) 我有一个目录,其中包含许多具有以下格式的文件:
1 or 2 numbers_S followed by 1 or 2 numbers_L001_R1 or R2_001.fastq
Examples: 1_S1_L001_R1_001.fastq or 14_S14_L001_R2_001.fastq
Run Code Online (Sandbox Code Playgroud)
我希望文件名是这样的: 1_R1.fastq 14_R2.fastq
我已经想出了regexp反映文件名的内容,并且可以成功地进行搜索和替换TextWrangler.以下是我提出的正则表达式:
Search: (\d+)\wS\d+\wL001\w(R\d)\w001(\.fastq)
Replace: \1_\2\3 (or $1_$2$3 depending on the program)
Run Code Online (Sandbox Code Playgroud)
但是,我想知道如何使用简单的Python脚本批量重命名文件.我很感激任何建议.
谢谢!
我的目录中有一个文件列表:
opencv_calib3d.so2410.so
opencv_contrib.so2410.so
opencv_core.so2410.so
opencv_features2d.so2410.so
opencv_flann.so2410.so
opencv_highgui.so2410.so
opencv_imgproc.so2410.so
opencv_legacy.so2410.so
opencv_ml.so2410.so
opencv_objdetect.so2410.so
opencv_ocl.so2410.so
opencv_photo.so2410.so
Run Code Online (Sandbox Code Playgroud)
它们是批量重命名的一系列错误的产物,现在我不知道如何从它们中删除中间的“.so”。例如:
opencv_ocl.so2410.so 应该 opencv_ocl2410.so
这是我尝试过的:
# attempt 1, replace the (first) occurrence of `.so` from the filename
for f in opencv_*; do mv "$f" "${f#.so}"; done
# attempt 2, escape the dot
for f in opencv_*; do mv "$f" "${f#\.so}"; done
# attempt 3, try to make the substring a string
for f in opencv_*; do mv "$f" "${f#'.so'}"; done
# attempt 4, combine 2 and 3 …Run Code Online (Sandbox Code Playgroud) 我有一个.cbr的大文件夹,我按照问题编号重命名它们以正确排序它们.我需要在ren行中包含什么才能让每个文件通过windows命令提示符增加文件名中的数字?我会经常这样做,所以我会把它变成一个.bat文件.
例如,其中n =初始数且m =最终数:n.cbr,(n + 1).cbr,...,(m-1).cbr,m.cbr
.bat因此:
ren *.cbz *.cbr
ren *.cbr <increment numbers n through m>.cbr
Run Code Online (Sandbox Code Playgroud)
或者,如何修剪每个文件名,以便只在扩展名之前留下数字?(从issue1.cbr到1.cbr)通过.bat或脚本宿主文件?
为什么这个脚本不起作用?
for filename in bre*; do
rename 's/bre//';
done
Run Code Online (Sandbox Code Playgroud)
我在目录中有以 bre 开头的文件,我想从文件名中删除这部分。它正在运行,什么都不会发生,它还没有完成。谢谢
for %f in (*.doc *.txt) do type %f
在前面的示例中,当前目录中具有 .doc 或 .txt 扩展名的每个文件都将替换 %f 变量,直到显示每个文件的内容。要在批处理文件中使用此命令,请将每个出现的 %f 替换为 %%f。否则,该变量将被忽略并显示错误消息。
这些与本示例中的变量不同吗?
https://www.tutorialspoint.com/batch_script/batch_script_variables.htm
set message=Hello World
echo %message%
Run Code Online (Sandbox Code Playgroud)
这些叫什么?我如何操纵它们?
我在一个文件夹中有一组文件。我想通过将文件名的一部分移动到不同位置来编辑所有文件名。这是我所拥有的样本:
Par1_MD_0_5_AL_2_ND_4_Dist_0_Pot_Drop_out.txt
Par1_MD_0_5_AL_2_ND_4_Dist_1_Pot_Drop_out.txt
Par1_MD_0_5_AL_2_ND_6_Dist_2_Pot_Drop_out.txt
Par1_MD_0_5_AL_2_ND_8_Dist_3_Pot_Drop_out.txt
Run Code Online (Sandbox Code Playgroud)
这就是我想要的:
Par1_MD_0_5_AL_2_Dist_0_ND_4_Pot_Drop_out.txt
Par1_MD_0_5_AL_2_Dist_1_ND_4_Pot_Drop_out.txt
Par1_MD_0_5_AL_2_Dist_2_ND_6_Pot_Drop_out.txt
Par1_MD_0_5_AL_2_Dist_3_ND_8_Pot_Drop_out.txt
Run Code Online (Sandbox Code Playgroud)
基本上,我想在“Dist_(number)”之后放置“ND_(number)”
感谢您的帮助。
regex powershell file-rename batch-rename rename-item-cmdlet
所以我有一个 jpg 格式的文件夹中的文件列表,如下所示:
"1.George ABCD.jpg"
"2.George ABCD.jpg"
"3.Mead ABCD.jpg"
Run Code Online (Sandbox Code Playgroud)
所以我想要做的是重命名它们,以便前缀成为像这样的后缀:
"George ABCD 1.jpg"
"George ABCD 2.jpg"
"Mead ABCD 2.jpg"
Run Code Online (Sandbox Code Playgroud)
我想让它通过子文件夹递归工作。
我有一个我试过的代码段在这里工作:
ls -Recurse |? BaseName -match '^(\d+\.)([^0-9].*)$' |ren -new {"{0}{1}{2}" -f $matches[2],' ', $matches[1].substring(0,1)+ $_.extension}
cmd /c pause
Run Code Online (Sandbox Code Playgroud)
现在的问题是我的一段代码目前不适用于双位数名称,例如:
"11.George ABCD.jpg"
Run Code Online (Sandbox Code Playgroud)
相反,它的作用是吐出
"George ABCD 1.jpg"
Run Code Online (Sandbox Code Playgroud)
这不是我想要的,我知道这与一位或多位数字的正则表达式 d+ 有关,但我不确定我应该使用什么来使其对一位或多位数字正常工作。
那就是我希望“11.George ABCD.jpg”的输出为“George ABCD 11.jpg”。
有什么办法可以解决这个问题吗?
batch-rename ×10
bash ×3
batch-file ×3
file-rename ×3
regex ×3
linux ×2
powershell ×2
rename ×2
windows ×2
centos ×1
command-line ×1
dos ×1
filenames ×1
glob ×1
loops ×1
msbuild ×1
path ×1
python ×1
wsh ×1