• 締切済み

シェアポイント上にあるファイルを操作するには

シェアポイントというものはよく知らないのですが シェアポイント上にあるファイルを バッチファイルでローカルにコピーしたり perlで操作したいのですが シェアポイント上にあるファイルは http://xxxx-xx.xx.~/test.htm というようにhttp://から始まるパスになっているため バッチファイルやperlからアクセスできないようなのですが シェアポイント上にあるファイル(test.htmなど)は バッチファイルやperlからどのように指定すれば よいのでしょうか。 ---test.bat-------------------------------------------------------------- copy "http://xxxx-xx.xx.~/test.htm" "c:\test\" --------------------------------------------------------------------------- では、 「'http:' は、内部コマンドまたは外部コマンド、 操作可能なプログラムまたはバッチ ファイルとして認識されていません。」 というエラーになります。 ----test.pl------------------------------------------------------------- my $file='http://xxxx-xx.xx.~/test.htm'; if (-e $file) { print "存在します"; } else { print "存在しません"; # <== 常にこちらになります } -------------------------------------------------------------------

みんなの回答

  • ambriel
  • ベストアンサー率51% (65/127)
回答No.4

まぁSharepointだもの、ログインは必要ですよね。 http://perldoc.jp/docs/modules/libwww-perl-5.813/lwptut.pod の「HTTP 認証」のセクションとか読んでみてください。 Webサイトのレルムの確認方法とかは、以下のページなんかが参考になります。 http://x68000.q-e-d.net/~68user/net/http-auth-1.html

yam2012
質問者

お礼

回答ありがとうございます。 <http://perldoc.jp/docs/modules/libwww-perl-5.813/lwptut.pod> に書かれていることを理解するのに時間がかかりました。 my $file='http://xxxx-xx.xx.xx/yyy/xxx/test.htm' usernameがUUUUUUUU passwordがPPPPPPPP (ドメインはDDDDDDDD) の場合、 my $lwp = LWP::UserAgent->new( agent => $ua, timeout => $timeout ); の次の行に $url->credentials( 'xxxx-xx.xx.xx:80', 'Secret File', 'UUUUUUUU' => 'PPPPPPPP' ); と記述して確認してみましたが Can't locate object method "credentials" via package "http://xxxx-xx.xx.xx/yyy/xxx/test.htm" (p erhaps you forgot to load "http://xxxx-xx.xx.xx/yyy/xxx/test.htm"?) at C:\test\test.pl line 14. となります。 $browser->credentials( 'servername:portnumber', 'realm-name', 'username' => 'password' ); の'realm-name'には何を指定すればよいのでしょうか。 なお、 <http://x68000.q-e-d.net/~68user/net/http-auth-1.html> のように telnet "http://xxxx-xx.xx.xx 80 と入力すると 接続中: http://xxxx-xx.xx.xx...ホストへ接続できませんでした。 ポート番号 80: 接続に失敗しました となり WWW-Authenticate: Basic realm="Secret File" の部分を確認することができませんでした。 よろしくお願いします。

  • ambriel
  • ベストアンサー率51% (65/127)
回答No.3

>Internet Explorer 11(Windows7)の場合は >my $ua = ~ の部分はどのように記述すればよいのでしょうか。 「特定のブラウザー以外はアクセスを弾く」という偏屈なサイトはそうないので、たぶん問題はそこではないと思います。 (一応、IE11のUAは「Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko」です。) >my $file = 'c:\test\test.htm'; 使っているのはWindows上でActivePerl? フォルダーパスは「c:\\test」(\をエスケープ) か「c:/test」でないとダメかも。

yam2012
質問者

お礼

回答ありがとうございます。 >(一応、IE11のUAは「Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko」です。) my $ua = 'Mozilla/5.0 (Windows NT 6.3; WOW64; Trident/7.0; Touch; rv:11.0) like Gecko';としてみましたが改善されませんでした。 >使っているのはWindows上でActivePerl? Windows7上のActivePerlです。 >フォルダーパスは「c:\\test」(\をエスケープ) か「c:/test」でないとダメかも。 my $file =に 'C:\test\test.htm' "C:\test\test.htm" "C:\\test\\test.htm" 'C:/test/test.htm' "C:/test/test.htm" のどれを記述してもダメでした。 print "error\n";の後に print STDERR $res->status_line, "\n"; の1文を追記して実行すると error 401 Unauthorized と表示されています。 手動でエクスプローラからはちゃんとファイルに アクセスできるのですが perlのLWPでアクセスしても 権限の関係か何かの理由でシェアポイントのファイルに アクセスができていないように見えるのですが、 何が原因なのか分かりますでしょうか。 よろしくお願いします。

  • tkf-
  • ベストアンサー率58% (821/1398)
回答No.2

WebDAVというのを調べてみてください。Webページをあたかもローカルディスクのように見せる仕組みです。 これを使えば、ファイルのコピーやPerlから開くことも可能になります。

yam2012
質問者

お礼

ありがとうございます。 <http://www.uenotokusyu.com/webdav/windows_vista.html> を参考にして設定をしてみたのですが 手順5のWebDAVで公開されているディレクトリのURLの画面の参照ボタンでは http://xxxx-xx.xx.~の先頭部分が見つかりましたので選択しましたが OKボタンが有効になりません。 仕方なくhttp://xxxx-xx.xx.~の部分を手で入力して最後まで続行すると、 コンピューターのネットワークの場所の所に 作成した名称のアイコン(フォルダ)が表示されました。 (アイコンは普通のフォルダのアイコンになっています) このアイコンをダブルクリックすると このフォルダの中のファイルが表示されます。 しかし、このフォルダをネットワークドライブに 割り当てることができません(リストに表示されません)。 バッチファイルから copy "TEST\test.htm" "c:\test\" というようにこのフォルダ名を指定しても 「指定されたパスが見つかりません。」 というエラーになります。どのように このフォルダを指定すればよいのでしょうか。 よろしくお願いします。

  • ambriel
  • ベストアンサー率51% (65/127)
回答No.1

Sharepointはありていに言えばWebサーバーなので、ファイルシステム用の「copy」などのコマンドでは当然アクセスできません。WebブラウザーがやるようなHTTPの命令を出さないといけません。 http://perldoc.jp/docs/modules/libwww-perl-5.813/LWP.pod こういうモジュールの助けを借りれば、ダウンロードくらいは簡単にできるでしょう。 「Web上で保存されているファイルをそのまま編集する」ような、Sharepoint独自の機能を使うのは相当に敷居が高いです。

yam2012
質問者

お礼

ありがとうございます。 <https://worklog.be/archives/2317> を参考にして下記のようなコードで ダウンロードしようとしましたがダウンロードが失敗します。 Internet Explorer 11(Windows7)の場合は my $ua = ~ の部分はどのように記述すればよいのでしょうか。 よろしくお願いします。 ---test.pl--------------------------------------- #!/usr/bin/perl use strict; use warnings; use LWP::UserAgent; my $url = 'http://xxxx-xx.xx.~/test.htm'; my $file = 'c:\test\test.htm'; my $ua = 'Mozilla/5.0 (compatible; MSIE 9.0; Windows NT 6.1; Trident/5.0)'; my $timeout = '20'; my $lwp = LWP::UserAgent->new( agent => $ua, timeout => $timeout ); ## コンテンツの取得 my $res = $lwp->get( $url, ':content_file' => $file ); ## ダウンロード成功時 if ( $res->is_success ) { print "success\n"; ## ダウンロード失敗時 } else { print "error\n"; } exit; -----------------------------------------

関連するQ&A