- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
我正在遍历大约 300 个目录并尝试在每个目录中创建一个文本文件。除了文件创建和后续编写之外,我的所有代码都有效。以下是我尝试写入文件的方式:(我应该注意到这段代码位于使用 setlocal EnableDelayedExpansion 的嵌套 for 循环中)
if !q! == 0 (
set myString=%%f
set myString=!myString:~0,-12!\temporary.txt
echo !m! >> !myString!
)
其中 %%f 是我正在分析的另一个文本文件的路径,因此我必须缩短路径。此文本文件的名称在所有目录中都是统一的。我试过只使用:
echo !myString!
产生(正确的文件路径)的示例输出:
C:\mywork2\MAX\BOTH0\temporary.txt
但是,当我运行上面的完整代码块时,我收到:
The fimename, directory name, or volume label syntax is incorrect.
如果我使用:
if !q! == 0 (
set myString=%%f
echo !m! >> !myString:~0,-12!\temporary.txt
)
程序运行没有错误,但从未创建文本文件。但是,如果我手动键入路径(迭代不可能),则会创建文本文件。我做错了什么?
这是目录布局:C:\mywork2\MAX\(arbitrary_name)\dataSet.txt ||和 C:\mywork2\Trees_Orig\(系统发育树)。
示例数据集(来自系统发育树):
#NEXUS
begin taxa;
dimensions ntax=5020;
taxlabels
Tachyglossus_aculeatus
Zaglossus_bruijni
Zaglossus_bartoni
Ornithorhynchus_anatinus
Anomalurus_derbianus
Anomalurus_beecrofti
Anomalurus_pelii
Anomalurus_pusillus
Microtus_townsendii
Peromyscus_californicus
Odocoileus_hemionus
Canis_latrans
Canis_lupus
Urocyon_cinereoargenteus
Vulpes_vulpes
Lynx_lynx
Euchoreutes_naso
Jaculus_blanfordi
Jaculus_jaculus
Jaculus_orientalis
Stylodipus_andrewsi
Stylodipus_sungorus
Monodelphis_iheringi
示例数据集(来自 dataSet.txt):
Species
Microtus_townsendii
Peromyscus_californicus
Odocoileus_hemionus
Canis_latrans
Canis_lupus
Urocyon_cinereoargenteus
Vulpes_vulpes
Lynx_lynx
Puma_concolor
Gulo_gulo
Mephitis_mephitis
变量名:
k: is used to simulate an array, by serving as the indexes to each species in dataSet.txt
f: is a dataSet.txt from C:\mywork2\MAX\*
i: represents the first tab delimited term of each dataSet.txt row (I've truncated this for you)
g: is a .tre phylogenetic tree (there's 2), but I have truncated it's length due to example
j: represents the first term of each row within the phylogenetic tree
q: serves as a boolean variable which is 1 when a species from the phylogenetic tree
is also in the dataSet.txt file. Otherwise 0.
n: serves as a boolean variable to tell when the batch file is examining species from the
phylogenetic tree and not meta data.
m: is the index of each species within the phylogenetic tree. These are written to a text file
when q = 0. This is because I will be creating a Paup block within a .NEX file to remove all
species within the phylogenetic tree not present in dataSet.txt.
myString: this variable is used to hold a truncated file path. I want each temporary.txt file to
be in the same directory as its respective dataSet.txt file.
编辑:这是我的代码 -->
setlocal EnableDelayedExpansion
SET "TabChar= "
for /r C:\mywork2\MAX\ %%f in (*) do (
set k=0
for /f "delims=%TabChar%" %%i in (%%f) do (
if NOT %%i == Species (
set /A k+=1
set elem[!k!]=%%i
)
)
for /r C:\mywork2\Trees_Orig\ %%g in (*) do (
set m=0
set n=0
for /f %%j in (%%g) do (
set q=0
if !n! == 1 (
set /A m+=1
for /L %%i in (1,1,!k!) do (
if !elem[%%i]! == %%j (
set q=1
)
)
if !q! == 0 (
set myString=%%f
echo !m! >> !myString:~0,-12!\temporary.txt
)
)
if %%j == taxlabels (
set n=1
)
if %%j == Monodelphis_iheringi (
set n=0
)
)
PAUSE
)
)
PAUSE
最佳答案
我有足够的圣诞精神来回应。
n
和 q
被用作标志。最好将其命名为目的标志以移除引用文档的要求。虽然将标志设置为 1/0 并使用 delayedexpansion 来访问它们的动态值将起作用,但更好的方案是将它们设置为nothing 或 something 然后使用 if定义的 flagvalue
无论是否调用 delayedexpansion 都有效。
m
和 k
是计数器值,最好命名为purposecounter 然后就不需要文档了。
mystring
是另一个无意义的变量名。最好命名为 destinationdirectory
来记录目的。在你正在做的地方设置这个变量是没有意义的 - 它完全取决于 %%f
所以在 for %%f
block 的开头设置它意味着它将只为每个 %%f
设置一次,而不是每次执行内部循环时(根据提供的数据,一次对 15 次。)
分配给 mystring
的值也显得不稳定 - 取决于 %%f
中文件名的长度。由于您只是选择驱动器和路径,%%~dpf
是更好的选择。
如果您用引号将目标文件名括起来,该过程会按预期创建目标文件但是,因为这是与 %%f< 扫描的同一目录中的另一个文件
然后文件名 temporary.txt
将出现在该目录中,您的进程将尝试将该文件用作数据源,尝试创建 dirname\t\temporary.txt
并且该目录不存在(t
来自 dirname\temporary.txt
由子字符串处理到位置 -12
。使用 %%~dpf
可以解决这个问题(但不能扫描由此过程创建的文件)
要跳过 temporary.txt
文件的扫描,您可以添加 if/i "%%~nxf"neq "temporary.txt"
作为门在 for ... %%f...do
之后或使用所需目录的 dir/s/b
扫描作为源 %% 的列表f
因为该列表将在处理发生之前完全生成,所以不包括在该过程中生成的文件。
我从提供的数据中获得的结果是 1 2 3 4 5 6 7 8 17 18 19 20 21 22 23 但您没有发布预期结果,所以我不知道该结果是否正确。
关于windows - 让 FilePaths 在 Batch 中正常工作(写入文本文件),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27664810/
我不知道这是为什么。我正在使用带有 adobe air 的主干。如果我将 filePath 硬编码为 adobe air 中主干的 url 属性,它可以工作,但通过命令行指定它不起作用。我警告了 fi
有没有可以用作分隔符的Windows或Unix路径中不能包含的特殊字符? 最佳答案 Wikipedia有助于列出the reserved characters for different filesy
目前,我将文件保存到绝对文件路径SAVE OUTFILE='my/path/to/file.sav'。这不是最佳选择,因此我想将文件保存到动态/相对文件路径,例如 SAVE OUTFILE='file
创建文件路径和URL时,我注意到很多次该路径以./或~/开头。 以./和~/开头的文件路径有什么区别? 他们每个人是什么意思? 最佳答案 ./表示“从当前目录开始”。 .指的是当前工作目录,因此类似.
我正在使用 Excel VBA。我想按下一个按钮直接打开另一个文件,而没有“选择文件窗口”的效果。 这是当前代码: Sub loadFile_click() Workbooks.Open("C:\Us
我正在编写一个 Jenkins 插件,我正在使用 build.getWorkspace()获取当前工作区的路径。问题是这会返回一个 FilePath 对象。 如何将其转换为 File 对象? 最佳答案
假设我在 Source Insight 中打开了一个文件 E:\code\module1\souce\temp.c。然后在 Source Insight 标题栏中,它将显示路径为 temp.c(E:\
在 ghci 中完成教程等工作 - 到目前为止一切都很好。不过,我完全错过了一些东西:我的函数构建了一个 IO [FilePath] “事物”。在 ghci 中它是这样的: ["xml","veloc
我尝试使用Path接口(interface); //get a path object with relative path Path filePath = Paths.get("C:\\Test\\
如何将连接的 String 转换为 Turtle FilePath?例如,以下程序尝试读取一些文本文件,将它们连接成一个新文件并删除旧文件。尽管启用了 OverloadedStrings 扩展,但它似
是否可以获取当前操作系统上文件的 Wine 路径? 例子: wine-get-path ~/foo.txt # Outputs: Z:\\Users\Tyilo\foo.txt wine-get-pa
这个问题在这里已经有了答案: 关闭 11 年前。 Possible Duplicate: Why am I getting an access denied error for the Docume
public void createFile(String filePath) { File file = new File(filePath); } change to ====> public
我的本地有一个示例数据集,我正尝试在集群上执行一些基本操作。 import dask.dataframe as ddf from dask.distributed import C
我看到在ProcessStartInfo中可以指定文件名,但是怎么指定文件路径呢? 谢谢。 最佳答案 当它说“文件名”时,它表示文件的完整路径或相对路径。所以你可以做类似 @"C:\program f
在我的代码文件路径中。Walk 遍历目录,在示例中所有目录都称为 dir 1. dir 2. dir 10. dir 100. dir etc 当遍历目录时它会看到 1. dir 10.
我在使用 filepath.Walk() 时遇到了一个奇怪的问题。它开始运行然后到达它刚刚挂起的点。我的 CPU 处于 100%,没有错误,它不会继续。我查看了我正在遍历的目录,它挂起的地方没有什么特
我在为 rsync 创建路径时遇到问题。 x := filepath.Join("home", "my_name", "need_folder", ".") fmt.Println(x) 我得到 "h
我正在使用 Go 1.7rc1 编写 GoLang 应用程序。 现在我想找到特定路径下的所有go文件。除此之外,我不想在某些目录上行走..例如..隐藏目录,如.git。 有没有办法为 Walk() 提
有史以来第一个 Stack Overflow 帖子! 我在 Dymola 2021x 中工作,我正在尝试运行一位同事提供给我的模型。其中一个组件的 package.mo 文件正在加载一些文件 ```f
我是一名优秀的程序员,十分优秀!