我所用的SPS2003中带附件的列表向MOSS2007迁移的烂方法和一些问题
公司里有一台SPS2003服务器R370(10.1.2.3)和一台MOSS2007服务器R380(10.2.2.7),我想把SPS03上的列表迁移到MOSS07上。
迁移方法:
1)列表内容通过,SPS2003上“导出”,然后MOSS2007上,“导入电子表格”方式创建列表 的方法基本上把数据转移过去
2)对于列表的附件转移就有问题,SPS服务器和MOSS服务器都可以通过共享方式进入,http://R370/itoa 和http://R380/itoa分别可以用\\R370\itoa\ 和\\R380\itoa\方式访问,\\R370\itoa\lists\list1\Attachments\下的文件就是列表的附件。其下每个文件夹都是以数字命名,发现它对应的列表记录的ID,所以在导出列表的时候最好先做一个“迁移视图”,此视图根据“ID”升序排列,另外,这个列表记录必需没有删除过,不然后果我想你也想得到。弥补的办法就是——丢失的自己去补全,导入后再删除。(所以说这是个烂方法,当然烂的还不止这些,用这个方法导入的所有字段属性可能会有变化,导入后需要自己重整一下,对于原来是“用户或者组”的类型字段,基本上只能转成“单行文本”类型,其次列表记录的时间全部丢失,创建人和修改者信息不能和新共用。当然,你可以选择导入后添加修改。我之所以用这个方法,是因为我不在乎以上信息的丢失,幸好这几个列表都只是有增无减的,谢谢创建这个表的人的全家,谢谢!)
事情并没有我想的这么顺利,原以为只要打开两个共享,复制过去就行了,
但是我复制这下面所有文件到\\R380\itoa\lists\list1\Attachments\下的时候不能复制,提示:“无法读取源文件或磁盘。”。但是我在\\R380\itoa\lists\list1\Attachments\下可以创建目录,然后再把文件复制进去是可以的。问题是文件夹太多了,我总不能一个个创建一个个复制吧。
通过cmd窗口进入\\R380\itoa\lists\list1\Attachments\ 发现mkdir 如果是数字名的文件夹就不能创建,只能通过改名的方式,创建数字为名字的文件夹。于是写了个脚本。但是还是出现问题,发现脚本跑完,目录结构是出来了,但是文件复制不过去。也就是xcopy用不了。
脚本很简单,addfile.bat:
echo on
IF (%1)==() GOTO NoParams
IF (%2)==() GOTO NoParams
rem u source
rem v dest
net use u: %1
net use v: %2
dir u: > dir.txt
for /F "skip=6 tokens=4" %%a in (dir.txt) do call addfile2.bat %%a v:\
xcopy u:\ v:\ /e/s
:NoParams
以下是addfile2.bat的内容
if (%1)==() goto bottom
if (%1)==(字节) goto bottom
if (%1)==(可用字节) goto bottom
mkdir %2\test
move %2\test %2\%1
:bottom
以下是脚本跑的结果:
D:\开发\Script\new>addfile.bat \\10.1.2.3\scxt\Lists\List2\Attachments\
\\10.2.2
.7\itoa\Lists\list25\Attachments\
D:\开发\Script\new>IF (\\10.2.2.7\itoa\Lists\list25\Attachments\) == () GOTO
No
arams
D:\开发\Script\new>rem u source
D:\开发\Script\new>rem v dest
D:\开发\Script\new>net use u: \\10.1.2.3\scxt\Lists\List2\Attachments\
命令成功完成。
D:\开发\Script\new>net use v: \\10.2.2.7\itoa\Lists\list25\Attachments\
命令成功完成。
D:\开发\Script\new>dir u: 1>dir.txt
D:\开发\Script\new>for /F "skip=6 tokens=4" %a in (dir.txt) do call
addfile2.ba
%a v:\
D:\开发\Script\new>call addfile2.bat 164 v:\
D:\开发\Script\new>if (164) == () goto bottom
D:\开发\Script\new>if (164) == (字节) goto bottom
D:\开发\Script\new>if (164) == (可用字节) goto bottom
D:\开发\Script\new>mkdir v:\\test
D:\开发\Script\new>move v:\\test v:\\164
移动了 1 个目录。
D:\开发\Script\new>call addfile2.bat 字节 v:\
D:\开发\Script\new>if (字节) == () goto bottom
D:\开发\Script\new>if (字节) == (字节) goto bottom
D:\开发\Script\new>call addfile2.bat 可用字节 v:\
D:\开发\Script\new>if (可用字节) == () goto bottom
D:\开发\Script\new>if (可用字节) == (字节) goto bottom
D:\开发\Script\new>if (可用字节) == (可用字节) goto bottom
D:\开发\Script\new>xcopy u:\ v:\ /e/s
文件创建错误 - 目录不是空的。
还发现一个问题在\\R370\itoa\lists\xxx\Attachments\下建不了以数字为名的目录,改名也不行奇怪。
大家有没有相似的经历?